2010-07-06 21 views
5

我說1到5行之間。除此之外,您還應該通過電子郵件向其他開發團隊證明自己的合理性。這有助於重用,強制命名和搭配方法。什麼是好的平均方法大小?

有何評論?

由於

+2

可以有25個1行方法和1個100行方法嗎? – Yellowfog 2010-07-06 11:59:25

+15

只要它*需要*,大小/行數就不如函數**做一件事**,IMO那麼重要。 – 2010-07-06 12:00:17

+0

我個人認爲沒有定義的答案是「正確的」。但是,你認爲你想觀看今年在倫敦QCon舉辦的「鮑勃叔叔」馬丁的演講,他在那裏談論了這個話題:http://www.infoq.com/presentations/Robert-C.-Martin-Bad - 代碼 – AdaTheDev 2010-07-06 12:02:44

回答

1

有些極端,我想的5或更小的複雜性cyclometric是一種合理的手段,而不是線的數目。將代碼分解爲少於5行可能意味着使代碼難以閱讀和費力。我知道這將會有不同的想法,這就是爲什麼這個線程應該被視爲主觀的關閉。

5

1行和5行似乎對我來說太小了一些限制。如果您將簡單的業務應用程序組合在一起,但沒有做太多的處理,那麼這看起來沒問題,但是如果有任何算法或流程,它們通常更具可讀性(並且可維護),以便按順序編寫處理步驟,而不是跨多種方法或類 - 即使它對於封裝,驗證等是合乎邏輯的。

5號線在很多情況下甚至沒有足夠驗證參數和迭代通過集合。

我會建議'關於一頁'; 20至30行是理想的。


例如:這似乎是有效的給我,但你會認爲這是不擅長的8號線:

// Calculates the depth of the layer in the object graph 
    public int GetIndex() 
    { 
     int ct = 0; 
     ViewLayer pos = this; 
     while (pos.Parent != null) 
     { 
      ct++; 
      pos = pos.Parent; 
     } 
     return ct; 
    } 

(我知道我張貼代碼開放自己了批評,但我的點表示,這是可讀的代碼)

+2

這是_way_太長,你應該使用這樣的東西:'公衆詮釋GetIndex(ViewLayer pos =這個){\ n返回(pos.Parent == null)? 0:1 + GetIndex(pos.Parent); \ n} \ n'在3行計時:-) – paxdiablo 2010-07-06 12:20:56

+1

這不是乾淨的代碼。乾淨的代碼爲這樣一個微不足道的任務不需要評論。首先,名稱可能是DepthInObjectGraph。其次,這可能是遞歸的,需要1或4行,這取決於你是否喜歡if/else或?:。 – qertoip 2012-04-07 13:50:46

+0

@qertiop - 幹得不錯,你找到了一種改進代碼的方式 - 這幾乎總是可能的。你的評論與答案有關,即你認爲沒有方法應該超過1-4行? – 2017-11-23 15:18:17

16

方法的代碼大小是方法的責任錯誤的度量。該方法應該只有一個主要行爲/創建任務沒有代碼重複。

1

我認爲它比這更復雜。

首先,方法傾向於遵循冪律分佈:在任何給定的項目中,都會有一些比絕大多數其他方法大得多的平均尺寸永遠不會收斂的方法。

其次,如果你需要發出,以滿足一個特定的任務10個API調用,也打破調用順序爲兩種方法只是爲了滿足尺寸上限是沒有意義的。當你把某些東西分解成若干部分時,你必須給出兩個名字(甚至三個)而不是一個。你必須記錄每個部分,等等。底線:小是好的,但不要盲目追隨它。最好的建議是嘗試使每種方法一致(集中)。

1

當然,只是讓代碼更難導航和理解,A調用B,調用C,那麼E,然後d,等我不知道它如何執行良好的命名,我有足夠的麻煩想出很好的描述性名稱對於我現有的方法,從來沒有想過一個5行。

它還使類更長,因爲您必須擁有方法簽名,打開和關閉大括號以及額外的可讀性行。

此外,大多數我的LINQ語句都超過5線長。

2

讓代碼的要求決定了多久太長。

你真的希望你的開發人員花時間寫電子郵件而不是開發你的代碼庫嗎?

相關問題