一、命名
1、名副其实
int userAge = 18; //看变量名就能知道是做什么的,一目了然,没有歧义。
2、避免误导
避免如使用o和l做变量名,因为看起来像“零”和“壹”。
3、易搜
比如有个变量或字段名为“type”,如果需要在项目中全局搜索,可能会搜到上千个结果。
解决办法:
(1) 数字或者短字符串可以用常量代替,如
public final static int SELECT_LIMIT_1000 = 100; public final static String SWITCH_ON = "on";
查看引用就可以找到所有的入口。
(2) 避免使用 type、flag、status类型的命名。
4、类名和方法名
类名应该是名词或名词短语,不应该是动词,如UserManager;
方法名应该是动词或动词短语,如postPayment、save。
二:函数
1、短小
一个函数代码量建议在100行以内。
2、只做一件事
相应的,我们的java接口也应该只做一件事。
3、避免标识参数
如下面代码中的“operation”:
public static function switchPrefix($data, $switchType) { if ($switchType == 1) { //todo something } else { //todo something } return $data; }
建议拆成2个函数,如:
public static function switchPrefixToOld($data) { //todo something return $data; } public static function switchPrefixToNew($data) { //todo something return $data; }
4、无副作用
比如校验用户名、密码的函数,里面不应该有写入会话的逻辑等等。本来只是想校验一下用户名是否正确,结果写入登陆会话了。代码如下:
public boolean checkPassword(String userName, String password) { User user = UserService.findByName(userName); if (user != null && password == user.getPassword) { Session.initialize(); // 写入会话 return true; } return false; }
5、分隔指令与询问
函数要么做什么,要么回答什么,不可两者并用。
三:注释
注释是一种失败。我们总无法找到不用注释就能表达自我的方法,所以总要有注释,这并不值得庆贺。
注释不一定能同代码与时俱进,会出现维护不当而导致与实际代码不符的情况。因此,想好如何写好注释还不如如何写好代码。
1、用代码来阐述
如你愿看到这个:
//Check to see if the employee is eligible for full benefits if ((employee.flags & HOURLY_FLAG) && employee.age > 65)
还是这个?
if (employee.isEligibleForFullBenefits())
四、格式
1、垂直方向
(1)区块间要有隔开
(2)相互联系的不要隔开,如2个成员变量是相同的概念
(3)概相关的代码应该相互靠近,放到一起,相关性越强,彼此之间的距离应该就越短
(4)变量申明尽可能靠近使用的位置
(5)相关函数应该放到一起,且调用者尽可能放在被调用者的上面,避免阅读者在源文件中跳来跳去
2、水平方向
(1)每行代码建议控制在120个字符内(不过个人习惯将代码在一行实现)
(2)操作符两边加上空格,空格符加强了分隔效果
int num = page * size;
(3)函数多个参数之间加空格
create(String name, int age);
3、缩进
用4个空格,不要用tab。
五、不要让错误处理搞乱逻辑代码
1、使用异常而非返回码
2、异常应记录足够详细的内容
3、别返回null值
返回null值,调用方得加判断,非常冗余和繁琐,如下:
Integer uid = getUid(); if (uid != null) { List<String> names = getArticleByUid(uid); if (names != null) { for (String name : names) { System.out.println(name); } } }
如果不返回null,代码会更简洁,如下:
Integer uid = getUid(); List<String> names = getArticleByUid(uid); for (String name : names) { System.out.println(name); } private List<String> getArticleByUid(Integer uid) { if (...) { return Collections.emptyList(); } }
4、别传递null值
六、类
1、类的组织
类应该从一组变量列表开始(公共静态常量->私有静态变量->私有实体变量)。
公共函数放到变量列表之后,某个公共函数调用的私有工具函数紧随该公共函数后面(自顶向下原则)。
2、类应该短小
通过计算权责衡量多大合适(函数一般通过代码行数衡量)。
文章出自:https://www.daixiaorui.com/read/284.html 本站所有文章,除注明出处外皆为原创,转载请注明本文地址,版权所有。
王者荣耀修改器http://www.98sjj.com/