0

Java 代码示例:

public String toString() {

   return (title + '\n' + border + '\n' + getEmpID() + " " 
           + getLastName() + " " + getFirstName() + " " 
           + getHours() + " " + getRate() + " " + getGross() + border);}

如您所见,这是一个很长的 toString 覆盖。

将代码行分解为更小的位的标准位置在哪里。之前'+'之后'" "'? 请帮忙!:)

另外,如果您能告诉我如何正确放置 {},那就太好了。

4

6 回答 6

5

基本上,这取决于您当地的惯例。我个人会:

  • 去掉整个表达式周围的(and ;)他们没有区别
  • 到处使用字符串文字而不是字符文字;避免意外结束执行整数加法而不是连接
  • 在运算符之前换行+,这清楚地表明下一行的开头确实位于现有语句的中间,而不是新语句。(这是一般惯例,不限于这种情况。)
  • 无论是在空格之前还是在值之前中断,都要保持一致;你已经在这样做了。(我认为你在哪种方式上保持一致并不重要,甚至在不同的陈述之间是否保持一致 - 但在单一方法中保持一致是很好的。)
  • 将右大括号移动到下一行
  • 添加@Override注释

最终会是:

@Override public String toString() {
    return title + "\n" + border + "\n" + getEmpID() + " " 
        + getLastName() + " " + getFirstName() + " " 
        + getHours() + " " + getRate() + " " + getGross() + border;
}

您也可以考虑使用String.format而不是字符串连接 - 并且可能还考虑每行只有一个值(和空格),从而导致代码更长但更容易更改,例如

@Override public String toString() {
    return title + "\n" 
        + border + "\n" 
        + getEmpID() + " " 
        + getLastName() + " " 
        + getFirstName() + " " 
        + getHours() + " " 
        + getRate() + " " 
        + getGross() 
        + border;
}

值得注意的是,无论平台如何,您的toString()方法始终用作\n换行符。这是一个合理的决定,但您需要注意这一点。就我个人而言,我通常不会在结果中包含换行符toString,但这是你的决定。

于 2013-09-09T05:50:21.500 回答
1
public String toString(){
   return (title + '\n' + border + '\n' + getEmpID() + " " 
           + getLastName() + " " + getFirstName() + " " 
           + getHours() + " " + getRate() + " " + getGross() + border);
}

我们通常做以下大括号放置。例如对于 if 语句

if (condition) {
 // do smth
} else {
 // do smth
}
于 2013-09-09T05:40:33.563 回答
1

一种替代方法是在每个重要关键字之前中断:

return (title + '\n'
      + border + '\n'
      + getEmpID() + " " 
      + getLastName() + " " 
      + getFirstName() + " " 
      + getHours() + " " 
      + getRate() + " " 
      + getGross() 
      + border);
于 2013-09-09T05:48:14.250 回答
1

我会这样做。

public String toString()   
{   
   StringBuilder sb = new StringBuilder();    
   sb.append(title).append('\n')      
   .append(border).append('\n')      
   .append(getEmpID()).append(" ")     
   .append(getLastName()).append(" ")    
   .append(getFirstName()).append(" ")    
   .append(getHours()).append(" ")    
   .append(getRate()).append(" ")     
   .append(getGross()).append(" ")
   .append(border);

   return sb.toString();    
}
于 2013-09-09T05:49:19.400 回答
0

最好的方法是遵循您的团队所遵循的约定。永远记住,他们将是阅读和维护此代码的人,因此最好遵循您的组织设定的标准。

对于连接,我建议使用String.format()which 给出printf字符串格式和参数替换的样式。MessageFormat.format()是我更喜欢的东西,因为它使用{0}..{n}老实说,我发现它更具可读性。两者都返回格式化的字符串。

String.format("%s %s %d", "foo", "bar", 3) 会给出字符串“foo bar 3” MessageFormat.format("{0} {1} {2}", "foo", "bar", 3) 也会给出字符串“foo bar 3”

对于牙套,这将是由

if(condition) {
    // code block
    // code block
} else {
    // code block
    // code block
}

根据 Oracle Java 编码约定 ( http://www.oracle.com/technetwork/java/codeconventions-150003.pdf )

  • 左大括号“{”与声明语句出现在同一行的末尾
  • 右大括号“}”单独开始一行,缩进以匹配其相应的开始语句,除非它是一个空语句,“}”应该紧跟在“{”之后</li>

但是请注意,许多开发人员对这种称为“拥抱其他人”的行为感到厌烦。

您还可以使用Checkstyle,它是一个 Eclipse 插件,可以在您保存工作时为您自动格式化这些内容。

再一次,我重申要遵循您团队的标准高于一切。

于 2013-09-09T05:50:16.313 回答
0

我会更好地使用

StringBuilder

它提供了更好的性能。String - 连接在每个连接之后创建一个新的 String,因为 String 是不可变的。

StringBuilder 是一个可变的字符串表示。

像您在示例中那样做这样的字符串连接是不好的做法。

问候

于 2013-09-09T06:30:42.330 回答