百无聊赖的面试中,忽然考官提出了一个问题,你认为什么样的代码是好代码?
卧槽。。。这终于到了我表现的时候了。想到上午被世纪佳缘血虐的样子,不禁感慨人生大起大落来的太快。
我当上CEO,迎娶白富美,走上人生巅峰就全靠这道题了。
对着面试官慧心的一笑,心里有B树,嘴里有乾坤。
首先要遵守面向对象三大基本特性:
封装:
利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。优点有1.减少耦合:可以独立地开发、测试、优化、使用、理解和修改2.减轻维护的负担:可以更容易被程序员理解,并且在调试的时候可以不影响其他模块3.有效地调节性能:可以通过剖析确定哪些模块影响了系统的性能4.提高软件的可重用性,并有助于提高类和系统的安全性5.降低了构建大型系统的风险:即使整个系统不可用,但是这些独立的模块却有可能是可用的
继承:
所谓继承是指可以让某个类型的对象获得另外一个类型的对象的属性的方法。要实现继承,可以通过 “继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。
多态:
实现多态,有二种方式,覆盖,重载。多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。
其次就是面向对象的五大基本原则:
单一职责原则:
一个类只做一件事情,不要为类实现过多的功能点,避免相同的职责分散到不同的类中。
开放封闭原则:
类,方法应该可以扩展,但是不能修改。遵循这个原则可以带来面向对象技术所声称的巨大好处:可维护、可扩展、可复用、灵活性好。
里式替换原则:
子类型必须能够替换掉它们的父类型。里式替换原则是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
依赖倒置原则:
抽象不应该依赖细节,细节应该依赖于抽象。简单说就是,我们要针对接口编程,而不要针对实现编程。
接口分离原则:
使用多个专门的接口比使用单一的总接口要好。
再浇一点油,还有低耦合高内聚。
耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。
内聚就是一个模块内各个元素彼此结合的紧密程度, 高内聚就是一个模块内各个元素彼此结合的紧密程度高。
内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。在进行软件设计时,应力争做到高内聚,低耦合。
终于答完了,原以为面试官会是一幅惹不起惹不起的样子。
但看到面试官波澜不惊的表情,和他稀疏的头发。。。我知道这个逼装的可能在他眼前并没有蓬荜生辉。
很傻很天真的我,很多天后并没有收到任何面试回复。