媒介
最近在看《代码大全》,昆山软件开发,可以说是一本软件开拓的百科全书,出格厚,可是干货也许多。平时写代码,代码类型是一个最低的要求(许多老代码连最低要求都达不到),为什么要这样划定代码要这么写,而不是那么写?这是一个值得深究的问题。而不是说我照着代码类型写代码就算完了,高质量的代码是一个专业工程师的追求。要知其然知其所以然,最近写发票理会的代码,因为涉及带理会PDF的算法,巨大度较量高,所以花了许多时间在重构,学乃至用的时候积聚了一些心得。
信息埋没原则
信息埋没是面向工具设计的一个原则,是对封装和模块化的一个更高维度的归纳综合。从Java的整个会见限制设计就浮现了信息埋没的原则,各类会见修饰符:public,protect,private,在类设计的时候,我们就要抉择什么袒露给外部,什么埋没起来。
举一个例子下面的代码暗示一个有自增ID的Person类。
public class Person { int id; private static int G_MAX_ID = 0; public Person() { this.id = ++G_MAX_ID; } }
上面的类设计有什么问题呢?它违反了信息埋没的原则,直接将ID分派的方法袒露了,这会给后头的维护带来许多问题:当你想给id的范畴做出限制的时候怎么办?当你在所有代码中利用++G_MAX_ID分派ID时溘然需要修改ID分派的算法怎么办?是不是需要去改所有++G_MAX_ID呈现的处所?更好的设计是将ID的分派算法埋没起来。
public class Person { int id; private static int G_MAX_ID = 0; public Person() { this.id = NewId(); } private int NewId() { return ++G_MAX_ID; } }
咋一看只是将++G_MAX_ID写到一个要领内里罢了,可是它埋没了ID分派的算法,让挪用者不需要体贴内里的实现,同时节制了变革,不管ID分派算法怎么变,都不会影响其他的代码。挪用者相识的信息越多,受到的影响就越大,信息埋没可以低落巨大度,节制变革的范畴。
上面的例子只是信息埋没的一个简朴应用,下面我们来举几个其他的应用例子:
最后总结一下信息埋没的长处:
一些不太常见的编程能力
函数(function)与进程(procedure)的选择
我们先来看看函数与进程区别:
平时我们编程其实没有太区别函数与进程,什么时候用函数,什么时候用进程其实没有过多的思量,感受都可以用。一个选择的法则就是当你的要领的目标是想返回跟你要领名称相符的值的时候用函数,不然用进程
举个例子,我看过许多XXProcessor接口内里的要领都是XX process(),严格来讲,这样的定名是不切合上面的法则的,昆山软件开发,process是一个没有寄义的定名,可是却有返回值,假如没有返回值那它的定名才是公道的。
虽然了,上面的法则仅供参考,世事无绝对,详细环境详细阐明,当你不清楚用函数照旧用进程的时候,可以参考这个法则。
利用boolean值来给措施做注释
相信各人看到一个if语句有许多条件的时候城市出格头痛,因为很难领略。譬喻下面的例子:
if ( ( elementIndex < 0 ) || ( MAX_ELEMENTS < elementIndex ) || elementIndex == lastElementIndex) { do.... }
但假如换成下面的写法,用boolean值的名字来给if语句注释,看起来就很好领略了。
finished = ( ( elementIndex < 0 ) || ( MAX_ELEMENTS < elementIndex ) ); repeatedEntry = ( elementIndex == lastElementIndex ); if ( finished || repeatedEntry ) { ... }
总结