评估代码质量好坏的几个维度
一、代码质量
1、可维护性
可维护强的代码:在不去破坏原有代码设计以及不引入新的bug前提下,能够快速修改或者新增代码。
2、灵活性
在添加新代码的时候,已有代码能够不受影响,不产生冲突,不出现排斥,在保证自身不糟到破坏的前提下灵活的接纳新代码。
1、添加新功能代码时,是否原有代码有扩展点
2、在实现功能模块时,可以关注下原有代码是否已经存在一些抽象类,模块可以直接拿来用。
3、在使用某组接口时,是否能应对多种场景,满足不同的需求,如果可以的话
3、简洁性
能让人理解前提的最小代码化。
4、可复用性
尽量减少编写重复代码,复用已有代码。
5、可测试性
可测试性高的代码,一定程度也会反应出代码质量不低。
6、可扩展性
不修改或者少量修改原有代码的情况下,通过扩展的方式添加新的功能代码。
对修改关闭,对扩展开放。
7、可读性
编写的代码应该是易读,易理解的。
1、检查代码风格和编程规范【命名,注释】
2、检查代码中是否存在一些常见的坏味道【函数过长,重复代码较多,过大的类】
二、编程方法论
1、面向对象
面向对象是一种编程思想,也是一种编程范式,现在比较流行的编程语言大部分都是面向对象编程语言,而大部分项目也都是基于面向对象编程风格进行开发的。
2、设计原则
设计原则是指导我们代码设计的一些经验总结。在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据设计原则来开发程序,从而提高软件开发效率,节约软件开发成本和维护成本。
- 1、单一职责原则
- 2、开闭原则
- 3、里氏代换原则
- 4、依赖倒转原则
- 5、接口隔离原则
- 6、迪米特法则
3、设计模式
设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。大部分设计模式要解决的都是代码的可扩展性问题。
4、编程规范
编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则,设计模式,更加具体,更加偏重代码细节。
推荐书籍:
《代码整洁之道》
《代码大全》
《编写可读性代码的艺术》
5、重构
维基百科:在软件工程学里,重构代码一词通常是指在不改变代码的外部行为情况下而修改源代码,有时非正式地成为“清理干净”。在极限编程或其他敏捷方法学中,重构常常是软件开发循环的一部分:开发者轮流增加新的测试和功能,并重构代码来增进内部的清晰性和一致性。
软件是不停迭代的,持续重构是保持代码质量不下降的非常重要的手段。
三、提高代码质量方法论总结
1、面向对象的思想(基础)
2、设计原则(抽象概念,规范设计的基本原则)
3、设计模式(遵从设计原则前提,代码模式的具体实现)
4、编程规范(提高代码可读性)
5、重构(融合以上四种:面向对象设计思想,设计原则,设计模式,编程规范)
四、简单了解:什么是设计模式
设计模式是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。
就是人们写的代码多了,逐渐总结出的一套能提高开发和维护效率的代码模式,即为设计模式。
学习设计模式的好处😋都有啥呢
- 在面试中从容应对设计模式相关的问题
- 代码质量有所提升
- 提高复杂代码的设计和开发能力
- 有助于我们读懂源码,学习框架更加事半功倍,理论实践相结合,加强提升代码功底,提升内力。
推荐书籍:
《大话设计模式》
《图解设计模式 》结城浩
五、设计模式的分类
GoF设计模式有23个,每个模式都为可重复的设计问题提供了一套解决方案。根据用途,分为三种:创建型(Creational),结构型(Structural),行为型(Behavioral)。
1.创建型模式(5种):
提供创建对象的机制,提升已有代码的灵活性和可复用性
- 常用:单例,工厂方法,抽象工厂,创造者
- 不常用:原型模式
2.结构型模式(7种)
介绍如何将对象和类组装成较大的结构,同时保持结构的灵活和高效;
3. 常用:
代理模式,桥接模式,装饰模式,适配器模式
4. 不常用:
外观模式,组合模式,享元模式
3.行为模式(11种)
5. 常用
观察者模式,模版方法,策略,责任链,迭代器,状态
6. 不常用
访问者,备忘录,命令,解释器,中介者
六、UML图
1.类图概述
统一建模语言(Unified Modeling Language,UML)是用来设计软件的建模语言。它的特点是简单,统一,图形化,能表达软件设计中的动态与静态信息。
UML的分类:
静态结构图:类图,对象图,组件图,部署图
动态行为图:状态图,活动图,时序图,协助图,构建图等。
1.2、类图的作用
类图反应的是类结构和类之间关系为目的,用以描述软件系统的结构,是一种静态建模方法。
类:属性,方法
A类和B类:继承,实现
1.3、类图表示法
- 抽象类在UML类图中,用矩形框表示;
- 类名以及抽象方法名都用斜体字表示;如下图:
➕号表示公有方法
➖号表示属性
- 接口在类图中,同样用矩形框表示,区别是接口在类图中第一层有两部分组成:构造型《interface》,以及接口名字。第二层为方法。如下图:
1.3.1、类结构表示法
在UML类图中表示关系:类与类,类与接口,接口与接口之间存在一定的关系,UML类图中一般会有连线指明他们之间的关系
1.3.2、用UML表示类与类、类与接口、接口与接口之间的关系
-
实现关系
-
泛化(继承)关系
-
关联关系
表示对象和对象之间的引用关系
1)、单向关联
2)、双向关联
表示双方都持有对方的对象属性
3)、自关联
4)、聚合关系(表示一种弱的拥有关系)
5)、组合关系(是一种强拥有的关系)
6)、依赖关系(对象之间耦合度最弱的一种关联方式)
小结:UML六种关系表示方式总结:1、实现 2泛化 ,3 关联 4 聚合,5 组合,6 依赖
即:1 、实现关系,2泛化关系,3 依赖关系,4 组合关系(组合+聚合+关联)多用组合少用聚合