1

这是一个主观问题,因为我想衡量是否值得我抱怨我的同事做了一些我觉得完全可憎的事情。

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

这是一个方法的例子(我想要它):

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

(我也讨厌很长的接口/类名:)

这似乎在 StackOverflow 上渲染得不好,但我想你们中的大多数人都知道我的意思。无论如何,其他一些开发人员会执行以下操作。

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

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

4

6 回答 6

3

我发现第一个示例通常更具可读性,但如果它超过某个预定义的限制(对我来说是 120 个字符),我会换行:

IReallyLongInterfaceName instanceOfInterfaceName =
        OurContainer.retrieveClass(IReallyLongInterfaceName.class,
                                   param1, param2, param3);
于 2008-10-02T10:45:52.497 回答
2

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

如果不滚动就无法容纳该行,则垂直滚动比水平滚动更可取。由于我们从左到右阅读,因此水平滚动意味着一直向后和向前移动。

我更喜欢每行一个参数而不是 Avi 的建议,这对我来说是任意的。如果将参数分布在多行但每行有多个参数,则在阅读代码时查找特定参数会更加困难。

于 2008-10-02T11:10:27.760 回答
2

也许您应该在标准构建过程中使用某种 checkstyle 插件来检查这种东西?如果您已与您的同事就该标准达成一致,要求他们遵守该标准似乎是合理的。

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

于 2008-10-02T10:24:26.277 回答
2

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

和 Phil 一样,我发现方法 2 更具可读性,因为您可以看到您需要看到的所有内容,而无需侧身滚动 :)

于 2008-10-02T10:31:12.597 回答
0

我更喜欢选项 2,但可以选择对变量名称不明显的参数进行注释。当您有一个要求一堆参数的函数调用时,审阅者可能很难判断代码在做什么。

因此,如果给定函数的参数超过 3 个,我通常会这样编写代码:

applyEncryptionParameters(key,
                          certificate,
                          0, // strength - set to 0 to accept default for platform
                          algorithm);
于 2008-10-03T03:43:34.847 回答
0

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

另一点是一般的易读性。杂志和报纸分栏印刷是有原因的——通常,更短的行和更好的布局/格式可以提高文本的可读性(尤其是屏幕上的文本)。

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

现在说到底,这是一场圣战。也许没有把花括号放在哪里那么糟糕,但它就在那里。我已经给了你我的偏好,但真正的问题又回到了你身上:你公司的标准是什么?在我看来,他们已经对选项 2 进行了标准化,这意味着为了团队的利益,您可能应该适应它们。

于 2008-10-02T11:29:26.963 回答