Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56427
  • 博文数量: 16
  • 博客积分: 691
  • 博客等级: 上士
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-07 14:53
文章分类
文章存档

2010年(16)

我的朋友

分类: C/C++

2010-12-18 09:59:35

    转载按:这是我在InfoQ上看到的一个关于代码书写规范的一系列的讨论,文后的评论,有些比较有意思的,我也一并摘抄下来了,大家有什么看法、想法也可以在这里继续讨论。



下面是一段代码,出现在一个函数里面:

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。有时候,没有选择是幸福的。对于大规模团队而言,尤其如此。

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

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

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

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



以下是原出处的评论(摘抄):

2010年12月13日 下午8时48分 发表人 G. Conan

1.完善项目模板/示例文档
2.完善项目编码规范文档

--------------------------------------------

2010年12月14日 下午7时37分 发表人 Lee Joe

这种方法太官僚了,大部分开发者不会来管你文档里规定了要怎么做,除非和工资挂钩。

--------------------------------------------

2010年12月15日 下午10时16分 发表人 zhang xiaofei

还有更极端的情况,好几个开发者就同一个问题实现了非常相似的数个类。。。

--------------------------------------------

2010年12月16日 下午8时23分 发表人 wu frank

作为开发人员,如果你设计的类是给别人使用的,那么你就应该清晰的说明所有方法的通途,实现方案,并发安全性等特性,否则,就尽你所能的把你写的public去掉吧~

阅读(933) | 评论(1) | 转发(0) |
0

上一篇:代码之丑(七)——你的语言

下一篇:没有了

给主人留下些什么吧!~~

chinaunix网友2010-12-20 16:05:47

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com