写代码时应当牢记的事情
-
多想少写,在写之前深思熟虑;
-
遵循最佳实践;
-
使用SonarQube等代码质量工具,或者如果使用eclipse或IntelliJ等IDE的话,也可以使用Sonar插件(SonarLint),这些都可以轻松入手;
-
尽量编写通用的代码;
-
不要自行创建API中存在的isEmpty、isNull或isNotNull等方法,许多有名的开源库(比如Apache)都提供了定义良好的方法;
-
使用IDE的重构工具,并了解其快捷方式:
public void doSomething ( ) {
Line1 ....
Line2 ....
Line3 ....
Line4 ....
Line5 ....
}
-
将一段代码从一个位置移动到另一个位置;
-
从其他地方抽取一段代码,然后创建一个方法(如上例所示);
-
重命名文件,变量或方法,注意,如果你手动做这个任务,那么就需要手动修改所有的地方;
-
尽量编写正确的测试用例(可选)。
-
类名应该是名词,每个单词的首字母都应该大写;
-
在编写新类之前,搜索项目中是否存在这样的文件。很多时候,我们会发现我们以不同的名称创建了相同的文件,这会误导项目和其他开发人员。例如:
已存在
|
新创建
|
AppUtil
|
ApplicationUtil
|
ConfigutationUtil
|
ConfigurationHelper
|
LoggerUtil
|
LoggerHelper
|
-
通过类名完整地描述的功能;
不恰当的类名
|
恰当的类名
|
PersonRestApi
|
PersonController
|
PersonRest
|
PersonController
|
PersonImplementation
|
PersonService
|
-
使用适当的访问修饰符;
-
文件的打包也非常重要,把正确的文件放在正确的地方,不要把常量文件放在util包等错误的地方,正确的地方应该是常量或元数据。
-
方法是动词,所以名称应该采用驼峰式命名法,例如doWhatToDo(),而非doWHatTODO();如何写出让同事无法维护的代码?这篇很有意思!
-
一个方法不应该超过30行,如果超过30行则说明过于复杂;
-
在定义方法之前认真考虑,方法应该具有某些含义,或者应该为特定的任务服务,例如createPerson或sendMail;
-
一个方法不应该同时执行多个任务,如果方法名为createPerson,那么就应该只创建一个人,不应该再做别的任务。很多人会这样做:
public Long createPerson(PersonVO personVO) {
1.Appointment appointment = trying to getting an appointment from DB.
2.then performing if else over the result of appointment.
.
.
.
.
14.then updating something on the basis of some condition.
15.then finally creating person.
}
-
无法理解代码流;
-
调试问题;
-
测试问题;
-
解决一个bug需要很长时间。
-
将其他任务转移到别的方法中;
-
提取方法中的有效代码,然后调用其他方法。
public Long createPerson(PersonVO personVO) {
appoitnmentValidation();
updatingSomething();
creating person code;
}
-
变量名应该采用驼峰式命名法,例如isTrue、userService、personName以及localServiceRerpository;
-
不应该使用一个字符的名称,除非在临时情况下;
-
不应该以_和$开头;
-
在定义变量名之前认真考虑;
-
不要使用大写。
-
尽量通过类来定义常量,而不是接口;
-
定义final类;
-
在常量类中创建一个私有构造函数,确保没人可以创建实例;
-
如果你整个服务都会使用唯一的一个常量文件,那么最好通过注释来分段,如下所示:
/**** Cache ****/
public static final String CACHE_NAME = "personCache";
/**** Attributes ****/
public static final String NAME = "name";
public static final String MOBILE = "mobile";
/**** Configuration ****/
public static final String APP_NAME = "PersonDemo";
public static final String APP_VERSION = "1.0";
-
常量名应该非常具体,应该全部使用大写,并利用下划线来分割,例如APP_NAME,而非appName。
-
避免使用多个嵌套的If else,这会增加代码的循环复杂度;
-
尽量编写通用的代码;
-
不要仅仅利用log来记录异常,应当抛出正确的消息或异常,而不是只输出异常。
-
我们需要通过设置数据来创建一个POJO对象;
-
我们需要编写发送邮件的代码。
MailDraft mailDraft = new MailDraft();
mailDraft.setTo();
mailDraft.setBody();
mailDraft.setMessage();
TODO:需要重构。
更多免费技术资料可关注:annalin1203