代碼之丑(八)——不一致的困惑
下面是一段代碼,出現在一個函數里面:
getGroupidByTel(tel, groupid);
YString sql;
sql.SetData("select subsid from subscriber b");
如果你沒有注意到問題,我稍微提醒一下,這里用到了兩個字符串類型。
這確實是一段真實的代碼,于是,我找到了項目組中的人,詢問兩個字符串的來歷。終于,一個頗有資歷的人給了我一個答案。
項目之初,有人編寫了XString,用了一段時間之后,在某些特定的場景下,XString會出問題,于是,又有英雄出現,編寫了YString。從此,XString和YString并立于江湖。
其實,我想搞清楚的只是一個問題,什么時候該用哪個類。
可是,我把這個問題拋給了不只一個人,卻沒有人能給我一個確定性的答案。好吧!當時,編寫YString的動機是XString出了問題,那問題是什么呢?我看到的依舊是困惑的面孔。
XString和YString讓我不安,原因在于,它們的并存破壞了概念一致性。一旦要寫一段用到字符串的代碼,我會糾結于到底該用XString還是YString。有時候,沒有選擇是幸福的。對于大規模團隊而言,尤其如此。
最簡單的做法自然是,選擇其一,一統江湖。方法很簡單,做一次全局替換就好了。
不過,理性告訴我,這是沖動的做法,特別是沒有人對兩個字符串有足夠清晰認識的情況下。在一個叫現實的東西面前,我不得不低下頭,改動遺留代碼風險極大,況且沒有足夠的測試支撐我們。
但我們至少可以在編寫的新代碼中做出統一的要求,選擇一條路走下去,而不是放任所有開發人員根據自己的脾氣秉性、喜怒哀樂,甚至天氣,隨機的做出選擇。
好吧!我可以再退一步,如果在全系統統一確實是一件困難的事情,但至少,至少在一個函數內別再混用不同的字符串了。
作者簡介:
鄭曄,ThoughtWorks公司咨詢師,擁有多年企業級軟件開發經驗,熱衷于探索各種程序設計語言在真實軟件開發中所能發揮的威力,致力于探尋合理的軟件開發方式,加入ThoughtWorks公司后,投入到敏捷開發方法的實踐之中,為其他公司提供敏捷開發方法方面的咨詢服務。他的blog是夢想風暴。
查看原文:代碼之丑(八)