idea会自动标注重复的代码。通常重复代码就是能够重构的点。ide
过长的函数。每每表明着功能复杂。可读性差。复用概率低
遵循一个原则,一个函数要尽可能短。并以做用命名函数
保证每一个类都只作一件事测试
这个我以为不须要提出来。由于公司一直都是用对象来做为参数的。编码
能够将这个类分为多个类。可是这个状况不容易发现。通常都是遇到真实状况后才考虑获得idea
遇到这种状况能够移动代码,将须要修改的代码都放在同一个类下。假如没有这样的类,能够建立一个code
若是该方法只调用了一个类的多个方法。将该方法移到调用类里。
若是该方法调用了多个类的多个方法。将该方法拆解。而后分离到调用类里。对象
对于老是成堆出现的数据应该封装成一个对象。好比方法参数,就能够封装成对象继承
看到switch语句直接就用多态替换。switch原本就是一种重复的语句开发
若是项目中有没用的类get
咱们将来必定会作这件事。可是如今用不上。就不必如今就加上各类特殊状况考虑。作到留有余地就好
好比一个类或方法的惟一服务对象是是测试用例。能够将测试用例和类一并删掉。若是是帮助测试用例获得正确的结果。则能够保留
类中的某个变量可能只针对某种特殊状况。但阅读该代码你会认为这是一般使用的变量。因此额外建立一个类存放该变量
消息链的定义:a对象调用b对象,b对象调用c对象,。。。。这样就造成了消息链
假如a对象发生了变化。
注:不是全部的消息链都是很差的。具体状况具体分析
解决方法:
class Person { Department _department; public Department getDepartment(){ return _department; } public void setDepartment (Department arg){ _department = arg; } } class Department{ private String _chargeCode; private Person _manager; public Department (Person manager){ _manager = manager; } public Person getManager{ return _manager; } }
若是客户但愿知道某人的经历是谁, 他必须先得到Department对象:
manager = john.getDepartment().getManager();
这样的编码就对客户端揭露了Department的工做原理, 因而客户知道:Department用以追踪"经理" 这条信息. 若是对客户端隐藏Department, 能够减小耦合. 为了这一目的, 我在Person中创建一个简单的委托函数:
public Person getManager(){ return _department.getManager(); }
如今,我须要修改Person的全部客户, 让它们改用新函数:
manager = john.getManager();
只要完成了对Department全部函数的委托关系, 并相应修改了Person的全部客户, 我就能够移除Person中的访问函数getDepartment()函数了
若是两个方法作着同一件事,但方法名不同。就要考虑从新更名字了
若是底层的类库不能知足开发的须要。就用外部方法封装该方法,并添加相关逻辑
纯稚的数据类(model)是指:它们拥有一些字段,以及用于访问(读写)这些字段的函数,除此以外一无长物。
这种类若是get/set方法均是public的,则须要引发注意,应该进行适当的封装,而不是所有公有化。
子类应该继承超类的函数和数据。但若是他们不想或不须要继承全部的函数和数据,则应该为这个子类新建一个兄弟类,把全部用不到的函数和数据放到兄弟类中,他们共享的数据和函数则放到共同的超类中。
当你感受须要撰写注释时,请先尝试重构,试着让全部注释都变得多余