• 2010-12-12

    代码之丑(八)

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/88738207.html

    下面是一段代码,出现在一个函数里面:
       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。有时候,没有选择是幸福的。对于大规模团队而言,尤其如此。

    最简单的做法自然是,选择其一,一统江湖。方法很简单,做一次全局替换就好了。

    不过,理性告诉我,这是冲动的做法,特别是没有人对两个字符串有足够清晰认识的情况下。在一个叫现实的东西面前,我不得不低下头,改动遗留代码风险极大,况且没有足够的测试支撑我们。

    但我们至少可以在编写的新代码中做出统一的要求,选择一条路走下去,而不是放任所有开发 人员根据自己的脾气秉性、喜怒哀乐,甚至天气,随机的做出选择。

    好吧! 我可以再退一步,如果在全系统统一确实是一件困难的事情,但至少,至少在一个函数内别再混用不同的字符串了。


    本文已经首发于InfoQ中文站 ,版权所有,原文为《专栏:代码之丑(八) 》,如需转载,请务必附带本声明,谢谢。

    InfoQ中文站 是一个面向中高端技术人员的在线独立社区,为Java、.NET、Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon 、免费迷你书下载如《架构师 》等。

    分享到:

    历史上的今天:

    梦想二年级 2005-12-12
    引用地址:

    评论

  • I am more interested about why they like to have their own String implementation......
    回复Carfield说:
    在某个蛮荒年代,什么都要自己实现。
    2010-12-14 15:31:18