2012-06-22 79 views
3

我們在團隊中對代碼的小小和平進行了大討論。乾淨的代碼和重構。額外的本地變量

示例1開發人員添加了額外的局部變量以使代碼更具可讀性。在局部變量中,他從常量中保存了值。

示例2相同的代碼沒有額外的變量,但從我們的開發人員的角度來看可讀性較差。

您認爲什麼更具可讀性? 從重構的角度來看更好嗎?

var tolerance = Constants.DateTypeGeneratorTolerance; 

var dayType = DateTypeGenerator.GenerateDateType(
       courseTripValidity, 
       tolerance, 
       symbols, 
       startDate, 
       endDate); 

2.

var dayType = DateTypeGenerator.GenerateDateType(
       courseTripValidity, 
       Constants.DateTypeGeneratorTolerance, 
       symbols, 
       startDate, 
       endDate); 
+3

這個問題沒有一個唯一正確的答案,因此它可以被封閉,過於主觀的(但是這是非常值得,我更喜歡版本與本地變量)。 –

+0

我與@ChrisTaylor –

+0

我想刪除變量...我在開玩笑。至少最初的開發者認爲可讀性在我看來是一個加號 –

回答

1

沒有明確的答案,但我個人更喜歡後者的版本。恕我直言,Constants.DateTypeGeneratorTolerance並不是無法忍受的長(儘管離那不太遠)。如果它的名字選擇得當,它就會精確地說明它的含義。儘管引入一個局部變量使得空間變得凌亂,並且使我更加難以理解正在發生的事情 - 不僅在直接閱讀代碼時,而且尋找這個常量的用法也更加麻煩。

此外,名稱本身很長,主要是因爲它包含範圍信息。通過將所有全局常量放入一個類中,您需要使用命名前綴(如DateTypeGenerator)區分它們。而如果您將常數移到邏輯上屬於的位置 - 無論是DateTypeGenerator本身,還是單獨的DateTypeGeneratorConstants類 - 常量名稱本身都會變得簡短。

請注意,幾種語言提供了特殊功能來減少對限定符的需求,從而縮短了名稱。比如Java中的靜態導入,或者C#中的using指令。

結合上述與C#using指令你:

using Tolerance = DateTypeGenerator.Tolerance; 

... 

DateType dayType = DateTypeGenerator.GenerateDateType(
       courseTripValidity, 
       Tolerance, 
       symbols, 
       startDate, 
       endDate); 
+0

+1我也不喜歡使用局部變量。 –