第2篇. 如何评价代码质量的高低?
有如下几个最常用的、最重要的评价标准。
1) 可维护性(maintainability)。如果bug容易修复,修改、添加功能能够轻松完成,可以主观地主为代码可维护性佳。
2)可读性(readability)。我们需要看代码是否符合编码规范、命名是否达意、注释是否详尽、函数是否长短合适、模块划分是否清晰、是否符合高内聚低耦合等等。
3)可扩展性(extensibility)。代码预留了一些功能扩展点,你可以把新功能代码,直接插到扩展点上,而不需要因为要添加一个功能而大动干戈,改动大量的原始代码。
4)灵活性(flexibility)。如果一段代码易扩展、易复用或者易用,我们都可以称这段代码写得比较灵活。
5)简洁性(simplicity)。
6)可复用性(reusability)。
7)可测试性(testability)。代码可测试性差,比较难写单元测试,那基本就能说明代码设计得有问题。
要写出满足评价标准的高质量代码,我们需要掌握一些更加细化、更加能落地的编程方法论,包括面向对象设计思想、设计原则、设计模式、编码规范、重构技巧等。而所有这些编程方法论的最终目的都是为了编写出高质量的代码。
第3篇. 面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?
1)面向对象编程国为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式等编码实现的基础。
2)设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某处设计模式,具有指导意义。比如,“开闭原则”是很多设计模式(策略、模板等)的指导原则。
3)设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。应用设计模式的主要目的是提高代码的可扩展性。
4)编程规范主要解决的是代码的可读性问题。持续小重构依赖的理论基础主要是编程规范。
5)重构作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模式、编码规范这些理论。
第4-8篇:面向对象
面向对象语言的特点:封装、抽象、继承、多态。分别可以解决哪些问题呢?
封装:类通过暴露有限的访问接口,授权外部仅能通过类提供的函数来访问内部信息或数据。封装将数据和方法绑定在一起,通过访问权限控制,只允许外部调用者通过类暴露的有限方法访问数据,提高了代码的可读性、可维护性和易用性。
抽象:让调用者只需要关心方法提供了哪些功能,并不需要知道这些功能如何实现。java中借助接口类或抽象类这两种语法机制,来实现抽象这一特性。函数本身也是抽象的一种体现。
继承:继承用来表示类之间的is-a关系。继承最大的好处是代码复用。但过度使用继承,继承层次过深过复杂,就会导致代码可读性、可维护性变差。继承特性是面向对象编程所特有的两个特性之一,另一个是多态。
多态:多态是指子类可以替换父类,在实际的代码运行过程中调用子类的方法实现,遵从了“对修改关闭、对扩展开放”的设计原则,提高了代码的扩展性和复用性。
滥用getter setter方法,破坏类了封装性;滥用全局变量和全局方法;定义数据和方法分离的类 等行为均会破坏面向对象特性。
在面向对象编程中,抽象类和接口是两个经常被用到的语法概念,是面向对象四大特性,以及很多设计模式、设计思想、设计原则编程实现的基础。java8中,接口中可以定义默认方法(default)和类方法(static)。接口和抽象类的区别。抽象类需要被继承,与子类是is-a的关系。接口类需要被实现,一个类可以同时实现多个接口,表示一种has-a的关系。抽象类更多的是为了代码复用,而接口就更侧重于解耦。接口是对行为的一种抽象,相当于一组协议或者契约,调用者可需要关注抽象的接口,不需要了解具体实现。接口实现了约定和实现相分离,可以降低代码间的耦合性,提高代码的可扩展性。怎么决定是使用接口还是抽象类呢?如果是is-a关系,并且是为了解决代码复用问题,我们就用抽象类;如果是一种has-a关系,并且是为了解决抽象而非代码复用,我们就可以使用接口。另外,抽象类是一种自下而上的设计思路,先有子类的代码重复,然后再抽象成上层的父类。而接口正好相反,是一种自上而下的设计思路,一般是先设计接口,再考虑具体实现。