代碼之丑(八)——不一致的困惑

作者: dreamhead  發布時間: 2011-01-03 21:34  閱讀: 736 次  推薦: 0   原文鏈接   [收藏]  

  下面是一段代碼,出現在一個函數里面:

 
XString groupid;
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是夢想風暴

  查看原文:代碼之丑(八)

0
0
 
標簽:重構
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()