6

写作风格是否好:

objectName.methodWithManyParameters(someLongParameter1, someLongParameter2, someLongParameter3, someLongParameter4, someLongParameter5);

(对于一条线来说显然很长)作为

objectName.methodWithManyParameters
(
    someLongParameter1, 
    someLongParameter2, 
    someLongParameter3, 
    someLongParameter4, 
    someLongParameter5
);

另一种方法是:

objectName.methodWithManyParameters(someLongParameter1, someLongParameter2, 
                                    someLongParameter3, someLongParameter4,
                                    someLongParameter5);
4

3 回答 3

4

根据Oracle 约定

4.2 换行

当一个表达式不适合一行时,根据以下一般原则将其拆分:

  • 逗号后中断。
  • 在操作员之前休息。
  • 更喜欢高级别的中断而不是低级的中断。
  • 将新行与前一行相同级别的表达式开头对齐。

如果上述规则导致代码混乱或代码被挤压到右边距,只需缩进 8 个空格。

以下是一些中断方法调用的示例:

someMethod(longExpression1, longExpression2, longExpression3, 
        longExpression4, longExpression5);


恢复

第二个选项是标准约定,第一个更具可读性,但可能会损害非常长的方法,或者由于类的长度而导致许多调用......

于 2015-06-25T11:42:27.980 回答
4

如果您正在与其他人合作,或者在预先存在的代码库中,请使用他们已经使用的任何标准。80 与 100 列,选项 #1/2/3 等。

如果你是自己工作,Jordi 的回答很到位。使用 Oracle 约定,并且可能使用 100 个字符的行长;我们的现代屏幕比 1996 年的显示器更能容纳更多的文本。

于 2015-06-25T13:27:08.113 回答
1

据我所知,没有标准的换行方式。这是个人喜好或公司内部编码风格标准的问题。但是,我建议阅读Google Java Style。以下是可能相关的报价。

我个人的喜好如下(希望有帮助):

objectName.methodWithManyParameters( someLongParameter1, 
                                    someLongParameter2, 
                                    someLongParameter3, 
                                    someLongParameter4, 
                                    someLongParameter5 );

4.4 列限制:80 或 100

项目可以自由选择 80 或 100 个字符的列限制。除下文所述外,任何超出此限制的行都必须换行,如第 4.5 节,换行中所述。

例外:

无法遵守列限制的行(例如,Javadoc 中的长 URL,或长 JSNI 方法引用)。package 和 import 语句(参见第 3.2 节 Package 语句和 3.3 节 Import 语句)。注释中的命令行可以剪切并粘贴到 shell 中。4.5 换行

术语注释:当可能合法占用单行的代码被分成多行时,通常是为了避免溢出列限制,此活动称为换行。

没有一个全面的、确定性的公式可以准确地显示在每种情况下如何换行。很多时候,有几种有效的方法可以对同一段代码进行换行。

提示:提取方法或局部变量可能无需换行即可解决问题。

4.5.1 在哪里休息

换行的主要指令是:更喜欢在更高的句法级别中断。还:

当在非赋值运算符处断行时,断行出现在符号之前。(请注意,这与 Google 风格中用于其他语言(例如 C++ 和 JavaScript)的做法不同。)这也适用于以下“类似运算符”的符号:点分隔符 (.)、类型边界中的 & 符号 ( ),以及 catch 块中的管道 (catch (FooException | BarException e))。当在赋值运算符处断行时,断行通常出现在符号之后,但任何一种方式都是可以接受的。这也适用于增强的 for ("foreach") 语句中的 "assignment-operator-like" 冒号。方法或构造函数名称保持附加在它后面的左括号 (() 上。逗号 (,) 保持附加在它前面的标记上。

于 2015-06-25T13:22:53.763 回答