這是一個經常出現的情況,從來沒有讓我感到太容易。我想我會問別人怎麼處理它。乾淨,單獨集中,自我記錄的方法不需要重複
試想一下,如果一個演示= 60命令行參數的處理是這樣完成的:
if DemoOptionSpecified() {
timeout = ReadInDemoTimeout();
DoDemoVersion(timeout);
} else
DoRealVersion();
DemoOptionSpecified()做某種的grep的參數字符串,返回true或false。
ReadInDemoTimeout()也執行某種類型的grep,相同的字符串,並返回一個整數。
兩個greps做兩件不同的事情,但當然只需要一個grep來做兩件事。兩個greps而不是一個可能不重要,但在其他情況下,可能會有兩個數據庫或Ajax調用。
我不特別喜歡讓DemoOptionSpecified()做什麼比看看是否提供該選項更多。方法名稱不會提示額外的值捕獲。
如果演示選項不存在,我不特別喜歡使用名爲ReadInDemoTimeout()的方法返回false的替代方法,因爲我只想在設置選項時聽到超時值。 DoRealVersion()不關心超時值。
我不覺得這是一個很好的不妥協的清潔代碼模式。思考?
第一個版本越來越近,可能確實是最好的事情,以滿足我的pedantry。我的第二個和第三個版本與我在Greg評論中提到的相同 - 只有在設置了演示選項時才需要超時細節,因此理想情況下我希望將它封裝在演示模塊中,以便代碼可以快速掃描而不會有視覺噪音。 – jontyc 2011-04-23 11:11:11
我會添加另一個更復雜的選項,它可能會招待你。 – 2011-04-23 12:28:56
是的,它招待我! :)這不是我追求的純粹,而是任何代碼都可以被閱讀和理解的最快速。當然這是一個簡單的例子,任何人都可以快速閱讀任何東西(欄注入!)。我會讓癱瘓的分析消失並睡在它上面。 – jontyc 2011-04-23 14:08:40