2008-10-02 31 views
1

這是一個主觀問題,因爲我想衡量是否值得我呻吟我的同事做一些我覺得完全可憎的事情。截斷方法調用

問題是,我的一羣同事會截斷方法調用以適應寬度。我們都使用可以處理大分辨率(我的分辨率爲1920x1200)的寬屏筆記本電腦,當涉及到調試和閱讀代碼時,我發現閱讀一行方法調用比多行調用更容易。

這裏有一個方法的一個例子(我怎麼會喜歡它):

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

(我討厭很長的接口/類名,以及:)

看來,這不在StackOverflow上很好地渲染,但我想大多數人都知道我的意思。無論如何,其他一些開發者會做以下事情。

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

這是在這一天爲你結束閱讀更輕鬆,我會在要求他們使用的第一個兩個的(因爲它是我們的標準的一部分)不合理?

+0

聽起來好像你寡不敵衆。我更喜歡選項2.然後我仍然瞄準80列的代碼。 – slim 2008-10-02 11:17:40

+0

它看起來確實如此,我可能不會標記任何東西作爲答案,但有趣的是看到我實際上是多寡寡頭:( – 2008-10-02 15:50:05

回答

2

也許你應該有你的標準構建過程的一部分某種checkstyle插件,檢查確切的那種事情?如果你已經與你的同事達成了這個標準,那麼讓他們堅持下去似乎是合理的。

我個人認爲,這兩個選項更易讀第二,但是這只是因爲我沒有一個寬屏顯示器;)

2

如果其在企業編碼標準exlicitly指出,方法之一是正確的然後通過一切手段呻吟他們,畢竟他們不遵守公司標準。 如果它沒有明確說明,那麼我想現在是將它納入標準的好時機。 但是,要注意的一點是,如果您使用的是帶有自動生成格式的IDE,則可能需要將其重新格式化爲樣式2運行時的樣式2。 所以,即使每個人都寫作風格1,當他們完成它時,最終也不會看起來像這樣。

和菲爾,我發現方法2更可讀,因爲你可以看到你需要看到,而無需橫向滾動你的眼睛:)

3

我找到的第一個例子,一般更可讀的一切,但如果它比一些預定義的限制長(120個字符,對我來說),我會斷線:

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

這讓我的投票非常有用,真正的問題變成了什麼時候給你強制換行符,在80個字符的限制,在操作符處,以及打開paren的函數等等中,我使用操作符的所有這些中斷最多,就像這個答案一樣 – Josh 2008-10-02 17:55:35

2

我更喜歡第二個例子。儘管您可能使用寬屏筆記本電腦,但可能並不總是全屏顯示窗口,或者在您的IDE中,主編碼區域周圍可能有許多其他面板會減少顯示代碼的可用寬度。

如果在沒有滾動的情況下線條不適合,那麼垂直滾動比水平滾動更可取。由於我們從左到右閱讀,所以水平滾動意味着始終前後移動。

我更喜歡Avi的建議,每行一個參數,這對我來說是任意的。如果您將參數分佈在多行上,但每行上有多個參數,則在閱讀代碼時會更難找到特定的參數。

0

我更喜歡選項#2。這個問題不僅僅是它在屏幕上的顯示方式(如果我有1920個水平像素,我還會有更多的停靠窗口),這就是我需要打印並閱讀它的外觀。長線會打印出大部分IDE,而作者爲打算提高易讀性而打破的線條打印效果良好。

另一點是一般易讀性。雜誌和報紙按列打印是有原因的 - 通常,文本的可讀性(特別是屏幕上的文本)通過更短的線條和更好的佈局/格式得以改善。

我覺得80可能是過於武斷,但我使用10PT索拉,我似乎能夠得到一個標準的8.5" 打印頁面上每行約100個字符。

現在,在結束那一天,這是一場神聖的戰爭,也許並不像放置花括號那麼糟糕,但它在那裏,我已經給了你我的偏好,但真正的問題可以追溯到你:你公司的標準是什麼?對我來說就像他們已經標準化了選項#2,這意味着爲了團隊的緣故,你應該適應它們。

0

我更喜歡選項2,但是可選地帶有參數註釋,其中變量名稱不明顯當你有一個功能在需要大量參數的調用中,審閱者可能很難說出代碼正在做什麼。

所以,我一般這樣的代碼,如果有3個以上的參數給定函數:

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