2012-05-22 32 views
0

方法它被認爲是最好的做法有有意義的,明確的名稱,儘可能爲方法參數之前,變量參數:是值得創建要求清晰

public myFunction(String meaningfulName1, String meaningfulName2, boolean meaningfulName3) 

但是,調用該方法,有時我們可以發現這個時候,這降低了可讀性:

myFunction("", "foo", false); 

是否值得的參數只是爲了清楚起見,創建變量的開銷?

String meaningfulName1 = ""; 
String meaningfulName2 = "foo"; 
String meaningfulName3 = false; 
myFunction(meaningfulName1,meaningfulName2,meaningfulName3) 

回答

1

根據我的經驗,我很肯定明確的方式是更好的(至少大部分時間)。第一種方式不會給你帶來很多性能提升;但對於需要繼續維護工作的人員來說,這會有很大的幫助。

畢竟,Pre-optimization is the root of evils

P/s:第二種方法對於帶有LONG參數列表的方法也非常必要(除了「objectize」params方法)。但我希望你不必處理它。

+0

爲java添加了一個語法糖(在Albin的答案中爲這個概念提供了信用):http://www.artima.com/weblogs/viewpost.jsp?thread=118828 –

0

如果您在定義函數時正確記錄函數,那麼對參數的解釋僅僅是按Ctrl +單擊即可,或者甚至將鼠標懸停在IDE中。

作爲開發人員,我更可能對這些變量和返回的內容感興趣,而不是在運行時的上下文(即使我確切知道每個變量是什麼,我不能依賴輸出沒有看到實際發生的情況),所以我想看看它的代碼。

+0

這是真的,但如果它遍及自己的項目,是否有意義保存點擊* x次......你不覺得嗎? – jasalguero

2

根據你的命名約定,我假設你不使用c#,但在c#以及許多其他語言中,你可以在調用方法時使用命名參數。

myFunction(meaningfulName1: "", meaningfulName2: "foo", meaningfulName3: false) 

我使用這種技術很多,以幫助可讀性,其中從內容不明顯不同的參數代表。特別是方法調用有很多0, 1, true, false, null是很好的候選人,你需要更加明確地在你的參數命名中使代碼可讀。

在命名參數不是選項的語言中,當內容從上下文不明顯時,肯定會分出變量以提高可讀性。

但是,在我寫的大多數代碼中,我很少用常量參數調用我的方法,大多數參數都是在其他地方計算的,並且已經包含在已命名好的變量中。

+0

感謝您的好消息!它看起來像java也有這個功能,這是我第一次聽說它!謝謝! –