[转载总结]高质量代码的一些要素 - ThinkingPool
7月28日的日常学习记录
高质量代码三要素:可读性,可维护性,可变更性
可读性强:
不要编写大段代码
将段落封装成一个又一个函数
在编写代码的工程中养成不断重构的习惯
函数设计遵循的原则:职责驱动设计
从上往下的编写:每个被分出去的程序,可以暂时只写一个空程序而不去具体实现功能,当主程序完成以后,再一个个实现它的所有子程序。
当一个函数的代码行数达到15-20行,开始考虑是否需要重构代码。
一个类不应当有太多的函数,函数过多要考虑分为多个类,一个包也不应该有太多的类
释义名称:new/add , edit/mod , del , find/query
释义名称:get开头的函数仅仅用于获取类属性
注释:职责驱动设计,首先描述该类的职责
注释:编写的是一个借口 or抽象类,在@author后添加@see,将该接口的抽象类的所有实现类列出来
可维护性:适应软件在部署和使用中的各种情况
代码不能写死(路径为相对路径 or 通过属性文件修改 )
预测可能发生的变化
将某些条件设置为可配置的,需要必要的注释
可变更性:因需求变化而对代码进行修改
提高代码的可复用性
对模型进行分析,用例模型,领域模型,分析模型,正向工程,逆向工程
利用设计模式提高可变更性:经典的32个模式
if...else : (重构一下,保证不修改原有代码,仅仅增加新的代码就能应付选项的增加):写成父类方法
选项较多,并且增加选项的可能性很大的情况下可以使用工厂模式
策略模式:解决继承出现的问题,减少类的继承,在类中增加某些方法的策略来代替继承,可以无限制的增加策略
适配器模式:设计的系统要与其他系统/模块交互,可能调用接口或交换数据。我方的接口按照某个协议编写,保持固定不变,在于真正对方接口时,在前段设计一个适配器类,对方协议变更,可以更换适配器。(启发:类似于rank中的service层,传的参数也同样尽量不要限制,而是传递数组)(通过适配器接受数据or传输数据)
模板模式:通常有一个抽象类,在抽象类中有一个主函数,按顺序调用其他函数(启发:类似于JdbController extends Controller),比较个性的步骤由其继承类完成。父类的主函数应当是final,其中的函数可以是可选步骤,称为【hood】,在编写时,抽象类中并不是抽象函数,而是一个空函数,继承类可以重载,也可以什么也不写,为空执行。
职责驱动设计(RDD) & 领域驱动设计(DDD)
根据职责分配行为和函数
根据需求进行用例分析,根据用例绘制领域模型和分析模型
《UML和模式应用》:RDD以职责为中心分配行为,软件对象与现实世界尽量保持一致(低表示差异)
《领域驱动设计》:领域模型,需求分析阶段建立领域模型
代码质量评价:低耦合,高内聚(功能,元素除了职责任务,没有其他工作)
其他概念:
高内聚低耦合
领域模型
工厂模式 based on 多态
用例模型
参考:url-link