截断方法调用

时间:2008-10-02 10:20:03

标签: java code-formatting

这是一个主观的问题,因为我想要判断一下我是否值得呻吟我的同事做一些我觉得完全可憎的事情。

问题是我的一些同事会截断方法调用以适应宽度。我们都使用可以处理大分辨率的宽屏笔记本电脑(我的是1920x1200),当涉及调试和读取代码时,我发现读取一行方法调用更容易,而不是多行调用。

以下是方法示例(我希望如何):

IReallyLongInterfaceName instanceOfInterfaceName = OurContainer.retrieveClass(IReallyLongInterfaceName.class, param1, param2, param3);

(我也讨厌很长的界面/类名:)

似乎这在StackOverflow上效果不佳,但我想大多数人都知道我的意思。无论如何,其他一些开发者会做以下事情。

IReallyLongInterfaceName instanceOfInterfaceName = OurContainer.retrieveClass(IReallyLongInterfaceName.class, 
                                                                              param1, 
                                                                              param2, 
                                                                              param3);

在一天结束时哪个更容易阅读,并且我要求他们使用两者中的第一个(因为它是我们标准的一部分)是不合理的?

6 个答案:

答案 0 :(得分:3)

我发现第一个例子一般来说更具可读性,但如果它超过某些预定义的限制(对我来说是120个字符),我会打破这些界限:

IReallyLongInterfaceName instanceOfInterfaceName =
        OurContainer.retrieveClass(IReallyLongInterfaceName.class,
                                   param1, param2, param3);

答案 1 :(得分:2)

也许你应该在标准构建过程中使用某种checkstyle插件来检查那种东西?如果你已经同意了你的同事的标准,那么让他们坚持下去是合理的。

我个人觉得这两个选项中的第二个更具可读性,但这只是因为我没有宽屏显示器;)

答案 2 :(得分:2)

如果它在公司编码标准中明确指出方法一是正确的方法,那么无论如何都要对它们抱怨,毕竟它们并不遵守公司标准。 如果它没有明确说明那么我想现在是将它纳入标准的好时机。 但要注意的一件事是,如果您使用具有自动格式的IDE,则可能需要在运行时将方法重新格式化为样式2。 因此,即使每个人都写作风格1,当它们完成时也可能看起来不像那样。

和菲尔一样,我发现方法2更具可读性,因为你可以看到你需要看到的所有东西而不必向侧面滚动你的眼睛:)

答案 3 :(得分:2)

我更喜欢第二个例子。即使您可能有宽屏笔记本电脑,也可能并不总是全屏显示Windows,或者在IDE中,主编码区域周围可能还有很多其他面板会减少显示代码的可用宽度。

如果在不滚动的情况下线条不适合,则垂直滚动优于水平滚动。由于我们从左到右阅读,水平滚动意味着一直向后和向前移动。

我更喜欢每行一个参数给Avi的建议,这对我来说是任意的。如果将参数分布在多行上但每行都有几行,则在读取代码时会更难找到特定的参数。

答案 4 :(得分:0)

我也喜欢选项#2。问题不仅在于它在屏幕上的外观(如果我有1920个水平像素,我还有更多的停靠窗口),如果我需要打印并阅读它,它的外观如何。较长的行将在大多数IDE中打印出来,而作者为了提高易读性而打破的行将打印得很好。

另一点是一般易读性。杂志和报纸以列形式打印是有原因的 - 通常,文本的可读性(特别是屏幕上的文本)通过更短的线条和更好的布局/格式得到改善。

我认为80可能过于随意,但我使用的是10pt Consolas,而且我似乎能够在标准的8.5“打印页面上每行获得大约100个字符。

现在在一天结束时,这是一场神圣的战争。也许没有把你的花括号放在哪里那么糟糕,但它就在那里。我给了你我的偏好,但真正的问题可以追溯到你:你公司的标准是什么?听起来他们已经标准化了选项#2,这意味着为了团队,你应该适应它们。

答案 5 :(得分:0)

我更喜欢选项2,但可选择使用变量名称不明显的参数注释。当你有一个要求一堆参数的函数调用时,审阅者很难说出代码在做什么。

所以,如果给定函数有超过3个参数,我通常会这样编码:

applyEncryptionParameters(key,
                          certificate,
                          0, // strength - set to 0 to accept default for platform
                          algorithm);