《JAVA代码规范》(三)通用代码格式 - 缩进、行长度、换行、空行、空格(2.2-2.6)

2019-03-28 17:31|来源: 苦力工

2.2      缩进

4个空格常被作为缩进排版的一个单位,以表示缩进,显示程序的层次级别,增加程序的可读性。不要在源代码中保留tab字符,这是因为tab字符会随着不同用户的不同设置和不同的资源管理工具(打印、文档、版本控制等)而代表不同的宽度。

2.3      行长度

尽量避免一行的长度超过80个字符,因为很多终端和工具不能很好处理之。

注意:用于文档中的例子应该使用更短的行长,长度一般不超过70个字符。

2.4      换行

当一个表达式无法容纳在一行内时,可以依据如下一般规则断开之:

?        在一个逗号后面断开

?        在一个操作符前面断开

?        宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开

?        新的一行应该与上一行同一级别表达式的开头处对齐

?        如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格。

以下是断开方法调用的一些例子:

someMethod(longExpression1, longExpression2, longExpression3,
           longExpression4, longExpression5);
  
  var = someMethod1(longExpression1,
                  someMethod2(longExpression2,
                             longExpression3));

以下是两个断开算术表达式的例子。前者更好,因为断开处位于括号表达式的外边,这是个较高级别的断开。

longName1 = longName2 * (longName3 + longName4 - longName5)
              + 4 * longname6; //PREFFER
  
  longName1 = longName2 * (longName3 + longName4
                           - longName5) + 4 * longname6; //AVOID

以下是两个缩进方法声明的例子。前者是常规情形。后者若使用常规的缩进方式将会使第二行和第三行移得很靠右,所以代之以缩进8个空格

//CONVENTIONAL INDENTATION
 someMethod(int anArg, Object anotherArg, String yetAnotherArg,
            Object andStillAnother) {
   ...
 }
 
 //INDENT 8 SPACES TO AVOID VERY DEEP INDENTS
 private static synchronized horkingLongMethodName(int anArg,
         Object anotherArg, String yetAnotherArg,
         Object andStillAnother) {
   ...
 }

if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。比如:

//不要使用如下缩进
  if ((condition1 && condition2)
      || (condition3 && condition4)
      ||!(condition5 && condition6)) { //不好的换行
      doSomethingAboutIt();             //易使这行被忽视
  }
  
  //使用如下缩进
  if ((condition1 && condition2)
            || (condition3 && condition4)
            ||!(condition5 && condition6)) {
      doSomethingAboutIt();
  }
  
  //或者使用如下缩进
  if ((condition1 && condition2) || (condition3 && condition4)
            ||!(condition5 && condition6)) {
      doSomethingAboutIt();
  }

这里有三种可行的方法用于处理三元运算表达式:

alpha = (aLongBooleanExpression) ? beta : gamma;
 
 alpha = (aLongBooleanExpression) ? beta
                                  : gamma;
 
 alpha = (aLongBooleanExpression)
         ? beta
         : gamma;

2.5      空行

空行将逻辑相关的代码段分隔开,以提高可读性。下列情况应该总是使用两个空行:

?        一个源文件的两个片段(section)之间

?         类声明和接口声明之间

下列情况应该总是使用一个空行:

?        两个方法之间

?        方法内的局部变量和方法的第一条语句之间

?        块注释或单行注释之前

?        一个方法内的两个逻辑段之间,用以提高可读性

2.6      空格

下列情况应该使用空格:

?        一个紧跟着括号的关键字应该被空格分开,例如:

 while (true) {

     ...

 }

 

注意:空格不应该置于方法名与其左括号之间。这将有助于区分关键字和方法调用。

?        空白应该位于参数列表中逗号的后面

?        所有的二元运算符,除了".",应该使用空格将之与操作数分开。一元操作符和操作数之间不因该加空格,比如:负号("-")、自增("++")和自减("--")。例如:

a += c + d;

a = (a + b) / (c * d);

while (d++ = s++) {

      n++;

}

printSize("size is " + foo + "\n");

 

?        for语句中的表达式应该被空格分开,例如:

for (expr1; expr2; expr3)

 

?        强制转型后应该跟一个空格,例如:

  myMethod((byte) aNum, (Object) x);

  myMethod((int) (cp + 5), ((int) (i + 3)) + 1);

本文链接:领悟书生教程网,转自ajava.org

相关问答

更多
  • eclipse运行Java代码出现原因很多,具体问题具体分析。 解决方案: 如果是web项目,不要在打开的文件上右击,要到项目路径上去右击”run as“,之后选择“server”。 如果是mian方法项目,需要找到带有main方法的类,之后打开这个类,之后“run as”,之后选择“java applet”即可。
  • 几乎所有的语言都有一个制表大小的约定。 大多数项目都有一个制表符大小的约定, 通常 (尽管不总是)与语言的制表符大小相同。 例如,Ruby是2,Python和PHP是4,C是8等。 如果没有明显的项目标签大小,坚持项目的标签长度或语言标签大小,是迄今为止最为理智的事情,因为几乎所有人都会使用这个标准,除了少数几个人以外。 设置不同制表符大小的能力可能是使用制表符而不是空格的最大优点,并且如果用户想偏离标准,那很好,但是没有合理的方法来遵守最大行长度所有可能的情况。 您可以将其与大多数网站进行比较; 他们被设 ...
  • 似乎PDT开发构建存在问题。 我重新安装了没有它的Zend Studio,它现在可以工作了。 It seems that there was a problem with the PDT dev build. I reinstalled Zend Studio without it and it now works.
  • 这里是Enum模块的例子。 你可能想要做类似的事情 @spec chunk_while( t, acc, (element, acc -> {:cont, chunk, acc} | {:cont, acc} | {:halt, acc}), (acc -> {:cont, chunk, acc} | {:cont, acc}) ) :: Enumerable.t() when chunk: an ...
  • Eclipse有内置的Java格式: Preferences > Java > Code Style > Formatter 对于HTML,你可以尝试一些类似HTML Tidy的东西。 Web Tools Platform项目也包含格式。 Eclipse does have built in Java formatting: Preferences > Java > Code Style > Formatter For HTML, you might try something like HTML Tidy ...
  • 该线程的示例: switch(foo) { case bar: Do1(); break; case foobar_2: Do2(); break; } 关键字'case'是缩进的。 “bar:”和“foobar_2:”对齐左侧。 您可以想象有一个框,其中相同的单词可以左对齐或右对齐。 剩下: switch(foo) { case bar: Do1(); break; case foobar_2: Do2(); break; } 对: switch(foo) ...
  • 如果您打算使用Word,1.5行空间或双行空间的功能,那么Visual Studio就没有类似的功能。 实现此目的的唯一方法是将编辑器中的字体更改为具有异常大的高度的字体。 If you meant to have a feature from Word, 1.5 line space or double line space then Visual Studio does not have anything like it. The only way to achieve this is to chang ...
  • 这是一个小函数,它将以StackOverflow兼容的方式格式化对象: formatSO <- function(x) { y <- get(x, parent.frame()) d <- deparse(y) cat(" ", x, "<-", d[1], "\n") cat(paste(" ", d[-1], "\n", sep=""), sep="") } 并尝试一下: > foo<-function(x,y){ + z<-x*y + super.z<-z^2 ...
  • 您正在寻找的是禁用删除尾随空格的选项。 但是,clang格式似乎没有该选项 。 但是,您可以在Xcode中设置一个选项以自动删除尾随空格。 (这是在Xcode首选项;不幸的是,我现在不在Mac上,因此我无法为您获取屏幕截图。) What you're looking for is an option to disable the removal of trailing spaces. However, clang-format does not appear to have that option. You ...