给代码分块
- if (firstName != null && lastName != null)
- if ((firstName != null) && (lastName != null))
- 保持代码块的单一性, 一个代码块只能有一个目标。 代码块内所有的内容都是为了一个
目标服务的, 不能把无关的内容放在同一个代码块里。 同一个代码块里语句的相互联系比与
相邻代码块里的语句关系更为紧密; - 注意代码块的完整性。 代码块是一个完整的信息块。 一个代码块要表达一个相对完整的意
思, 不能一个意思没说完就分块了, 就像话说了半句一样; - 代码块数量要适当。 代码块过多, 会让人觉得路径太长, 逻辑复杂, 不容易阅读理解。 一
个基础的代码块最好不要超过25行(通常显示屏小半个页面) , 否则就会有增加阅读理解的
困难。
使用空白空间
空行用于垂直分割, 用于分开同级别的不同代码块
- 同级别代码块靠左对齐
- 同级别代码块空行分割
- 下一级代码块向右缩进(四个空格的缩进最为常见, 二个空格的缩进次之, 八个空格的缩进使用的较少。)
-
同行内代码块空格区隔(逗号分隔符后要使用空格,运算符前后都要使用空格)
-
一行一个行为
基本的换行原则
我们前面讨论的代码分块的基本思想, 同样适用于换行。 基本的换行规范需要考虑以下三点。
- 每行代码字符数的限制。 一般情况下, 每行代码不要超出80个字符( 80个字符是传统终端
的宽度, 比如vi编译器) 。 由于屏幕尺寸和代码阅读终端的变化, 现在的很多规范, 开始使
用120个字符的限制。 所以我们编码的时候, 需要留意一下; - 如果一行不足以容纳一个表达式, 就需要换行;
- 一般的换行原则包括以下五点。
在逗号后换行。
String variable = anObject.getSomething(longExpressionOne,
longExpressionTwo, longExpressionThree);
在操作符前换行。
String varibale = longStringOne + longStringTwo
+longStringThree;
高级别的换行优先
anObject.methodOne(parameterForMethodOne,
anObject.methodTwo(parameterForMethodTwo));
/ conventional indentation
int runningMiles = runningSpeedOne * runningTimeOne
+ runningSpeedTwo * runningTimeTwo;
// confusing indentation
int runningMiles = runningSpeedOne
* runningTimeOne + runningSpeedTwo
* runningTimeTwo;
- 新的换行与上一行同级别表达式的开头对齐
anObject.methodOne(parameterOne,
parameterTwo,
parameterTwo);