您的位置:知识库 » 软件设计

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

作者: dreamhead  发布时间: 2011-01-03 21:34  阅读: 832 次  推荐: 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
标签:重构

软件设计热门文章

    软件设计最新文章

      最新新闻

        热门新闻