代码行换行 – 如何处理长行

我面对的是一个长度为153个字符的特定行。 现在,我倾向于在120个字符之后破坏事物(当然,这在很大程度上依赖于我和当地的惯例。)但说实话,无论我在哪里打破线条都会让它看起来很糟糕。 所以我正在寻找一些关于我应该为此做些什么的想法。

这是一行:

private static final Map<Class, PersistentHelper> class2helper = new HashMap<Class, PersistentHelper>(); 

我对这两个关于如何/在哪里打破界限(及其原因)的想法以及缩短生产线本身的方法持开放态度。

我们不是一个Java商店,并没有针对此类事情的本地约定,或者显然我只是遵循它们。

谢谢!

一般来说,我运算符之前断行,并缩进后续行:

 Map longMap = new HashMap(); String longString = "some long text" + " some more long text"; 

对我而言,领先的运营商清楚地传达了“这条线从其他东西继续而来,它不能独立存在。” 当然,其他人有不同的偏好。

这就是我这样做的方式, Google也是这样做的。

  • 非赋值运算符的符号之前中断。
  • 符号=和for 之后中断。

在您的情况下,由于您使用的是120个字符,因此可以在赋值运算符之后将其分解

 private static final Map, PersistentHelper> class2helper = new HashMap, PersistentHelper>(); 

在Java中,对于这种特殊情况,我会在中断后给出两个制表符(或八个空格),具体取决于制表符或空格是否用于缩进。

这当然是个人偏好,如果您的项目有自己的换行约定,那么无论您喜欢与否,都应该遵循。

恕我直言这是写你的线的最佳方式:

 private static final Map, PersistentHelper> class2helper = new HashMap, PersistentHelper>(); 

这样增加的缩进没有任何括号可以帮助您看到代码只是分裂,因为行太长。 而不是4个空格,8将使它更清晰。

使用Guava的地图静态工厂方法,只有105个字符长。

 private static final Map, PersistentHelper> class2helper = Maps.newHashMap(); 

我认为将最后一个运算符移动到下一行的开头是一个很好的做法。 这样你就可以马上知道第二行的目的,即使它不是以操作符开头的。 我还建议使用2个缩进空格(2个制表符)作为先前损坏的制表符,以区别于正常的缩进。 这可以立即显示为继续前一行。 因此我建议:

 private static final Map, PersistentHelper> class2helper = new HashMap, PersistentHelper>();