编程原则
Posted huiandong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程原则相关的知识,希望对你有一定的参考价值。
提高可读性。
小块的代码,越小越好。
消除重复代码。
尽量进行抽象
一目了然的命名,不要怕名字长,包括类、变量、方法。
尽可能提高代码的表达力,而不是去使用注释。
删除无用代码,版本管理工具会帮你保留历史,不用担心找不到。
大胆写方法吧,先不要想着怎么优化,先专注于业务与功能,再进行优化。
方法短小,利于阅读。
一个方法只做一件事,业务多的能拆则拆。
方法参数能少则少,提高可读性。
条件句后面跟的代码段往往可以独立出来放到一个方法中。
if 跟肯定式更容易理解。
数字常量、字符串常量不要直接出现在代码中,应当先做声明,在代码中使用此常量的引用。
变量在靠近使用它的地方定义,私有方法在调用它的公有方法下面定义。
重载构造器时,考虑 用静态工厂方法替代构造器。
方法传参不要使用 null,将这个要求作为默认规则,对于特殊原因不能做到的情况应当使用 @Nullable 注解标明。
方法返回值亦如此,同上。(PS:当返回值为空时,可以选择抛出异常)
使用空对象,代替参数中为 null 的对象引用,《空对象模式》。
用简洁的方式做空值判断,比如 Java8 的 Optional、Guava 的 Preconditions 等。
严谨定义数据库表的空值约束,一定不为空的字段对应的实例属性无需进行空值判断。
函数最短原则(不多于30行)。
(2)变量单一职能原则(一个变量只允许承担一个责任,针对每次赋值,创建一个独立。对应的临时变量。循环变量和收集结果变量除外)。
(3)函数单一职能原则(一个函数只做一件事情)。
(4)for循环单一职能原则(一个for循环只做一件事情,也许你会考虑效率问题,但不经过测试是没有发言权的)。
(5)三次原则(事不过三,三则重构)
代码的坏味道:
1. 重复代码(Duplicated Code)
(1)同一个类的两个函数含有相同的表达式,采用Extract Method(提炼函数)方法提炼重复的代码。
(2)两个互为兄弟的子类内含有相同表达式,采用Extract Method提取函数,使用Pull UP Method 放到超类内。如果代码之间只是类似,并非完全相同,那就用Extract Method将相似部分和差异部分割开,构成独立的一个函数。可运用Form Template Method 获取一个模板模式。
(3)如果两个毫不相关的类出现重复代码,应考虑Extract Class 将重复代码提炼到一个独立类中。
2. 函数过长(Long Method)
常用方法:
1.提炼函数(Extract Method):将某段代码放进一个独立函数中,并让函数名称解释该函数的用途。
2.内联函数(Inline Method):在函数调用点插入函数本体,然后移除该函数。
3.内联临时变量(Inline Temp):将所有对该变量的引用动作,替换为对它赋值的那个表达式自身。(某个临时变量被赋予某个函数调用的返回值)
4.以查询取代临时变量(Replace Temp with Query):一个临时变量保持某个表达式的运算结果,将这个表达式提炼成一个独立函数中,将这个临时变量的所有引用点替换为对新函数的调用。此后,新函数可以被其他函数使用。
5.引入解释性变量(introduce Explaining Variable):一个复杂的表达式可以将这个表达式(或者其中的一部分)的结果放进一个临时变量。以此变量名称来解释表达式用途。
6.分解临时变量(split temporary variable):某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集结果,针对每次赋值,创造一个独立,对应的临时变量。体现变量的单一职能原则。
7.移除对参数的赋值(Remove Assignment to Parameters):代码对一个参数进行赋值,应以一个临时变量取代该参数的位置。java采用的是值传递,函数体内对参数的改变都不会影响原来的值。
以上是关于编程原则的主要内容,如果未能解决你的问题,请参考以下文章