2016-07-08 145 views
0

我與隊友就以下事項發生了爭執。我們需要將一個字符串中的符號解析爲int(它總是一個數字),這個特殊的功能被用在很多地方。因此,可以這樣做:何時創建新功能?

var a = int.Parse(str[i].ToString()); 

參數是:我們需要爲此創建一個函數。

int ToInt(char c) { 
    return int.Parse(c.ToString()); 
} 

,可用於:

var a = ToInt(str[i]); 

我的觀點是,建立這樣一個功能是壞的:它使任何好處,除了輸入幾個字符以下(無,因爲我們有自動完成),但這種做法增加了一個代碼庫,並通過引入附加功能使代碼更加複雜。我的隊友的理由是,這隻能稱爲一種這樣的功能更方便,在這種做法中沒有什麼不好的。

其實問題涉及到一個概念:什麼時候可以(如果有的話)將2-3-4函數的組合與新函數包裝在一起? 所以我想聽聽你的意見。

我強烈建議,這主要是根據個人喜好定義的。但是我也希望聽到一些客觀因素來爲我們的項目中的這種情況定義一個公約。

+0

這是一個個人意見/機構特定的風格約定。 –

+0

''我想聽聽你的意見'' - 就是這樣,這完全基於個人意見。例如,另一個選項可能是爲'string'和/或'char'編寫擴展方法,它可以被稱爲:'someString.ToInt()'或者可能是一個用於這種轉換的類(不同於, 'Convert'類已經存在)。對此,真的沒有全部的技術規則。隊友們可能會對這個問題持不同意見,因爲這是非常有效的,但完全是主觀的原因。 – David

+0

我我並不是專家,但我相信你會爲處理器做更多的工作來處理這個功能,因爲它們會做同樣的事情,再加上在堆棧中保存一些東西以及新功能的調用 – lazyy001

回答

-1

實際上,設計可以用許多方式來完成,這取決於整個軟件的實際設計,可讀性,易於重構和封裝。這些事情每次都要由自己來考慮。

但在這種特殊情況下,我認爲它能夠更好地保持它沒有的功能,並把它作爲第一個例子的原因有很多:

  1. 它實際上的一行代碼。
  2. 在性能上調用函數的開銷將遠遠超過您從中獲得的好處。
  3. 編譯器本身可能會將它重新打包爲單行調用,如果您將其設置爲函數,雖然並非總是如此。

這樣做的好處主要是如果你想添加錯誤檢查,TryParse等...在函數中。

1

創建新的子程序/方法/功能的原因很多。以下是一些列表。

  1. 當子程序被多次調用時。
  2. 如果它使您的代碼更易於閱讀/理解。
  3. 個人喜好。