brooks 写的 《人月神话》是IT行业的经典,大家都非常多的引述关于没有银弹的断言。
不过在这本书内,我还注意到他提到了一个关于bug的故事: 一个非常优秀的IBM程序员,主动拿出自己的代码来做评审,虽然信心满满,但是在一个15行的代码块内被找出了7个bug 来。
看到这里,我合上书,想想,这是一段怎样的代码,是那个行业的,用了什么样的语言?这个IBM程序员真的那么能干吗?
虽然缺乏这样的信息,我觉得15对7都是一个令人惊讶的数字。可是别人的例子到底不是自己的例子,感同身受的角度来说,终究还是差了点。就好比一个人来到了罗马和在相片上看到了罗马,差距是非常大的。
冥冥中自有安排。终于我也碰上了一次。
文章“巧用??操作符”发出后,下班前几分钟,yy找到我,这是我们的对话。为了方便阅读,我列出这两行代码:
var serials = serialout ?? "" + splitter + serialin ?? "";
serials.TrimStart(splitter);
yy:不好意思,你的代码我发现了2个错误。
me:两行代码你发现了2个错误?
yy:是啊。一个是??操作符的结合优先级比+低,导致和你期望的不一致;还有不仅仅要考虑TrimStart,当serialin==null时,需要TrimEnd。
me: 真不错。你把这个发到论坛上去吧。
yy: 不用了,你知道就可以了。
me: 不,一定要发上去;这样的学习机会不多,不能只是你我知道,让大家都知道多好。
yy: 好吧。
第二天他又找到了一个,说,"你不要介意,我又发现了一个bug,因为 serials.TrimStart 不会改变serials,而是通过函数返回值的方式得到新值,所以必须付给一个变量,像这样:serials = serials.Trim(splitter)“。
最后的效果是:
var serials = (serialout ?? "") + splitter + (serialin ?? "");
serials = serials.Trim(splitter);
这样下来,我的这个代码段的代码行和bug比例为 2:3,比起brooks的案例的15:7还要高!终于圆了一个n年前的梦啊。
我对如下的看法更加清晰:
1. 问题只要找,总是有的。
2. 我们能够做的,是在一定范围内控制错误,而不可能彻底的消灭他
3. 我们无法控制没有问题,但是可以通过一定的做法,让问题更加容易被发现;这就是重构的基本理由。
4. 问题常常存在于开发者的思维死角,因此换了角度,问题往往容易被发现;这就是互换评审的基本理由。
5. 人们总是容易因为不同的看法导致无法达成一致,也恰恰是这样的不同看法的存在,导致互换评审能够更加容易让问题暴露出来。真是非常有趣的人性。上帝怎么安排的?
为此我专门感谢了他。
分享到:
相关推荐
员工应当有勇气直面问题,摆脱名利思想,勇于向上级报告存在的问题,而不是仅仅展示工作成果。正视问题是个人和企业发展的重要态度,敢于暴露问题,敢于与优秀标准对比,才能不断学习和进步。此外,员工还应积极倾听...
三部门要求:互联网平台企业要直面存在的问题.pdf
总结来说,落实动员大会的精神,就是要在宣传工作中强化细节意识,直面问题,深挖原因,制定并执行有效的整改措施,最终实现工作实效的提升。这不仅是对个人职业素养的要求,也是推动整个宣传部门乃至城市发展的重要...
文章通过辩证法的角度引导读者理解,解决问题不仅需要直面问题,还需要有耐心和理性,不能过于急躁或悲观。 【标签】:“文档”表明这是一篇文字资料,可能是一篇论述文或报告。 【部分内容】:文章提到,问题的...
教育工作者需把握机遇,直面问题,通过科学地运用大数据技术,推动思想政治教育的创新与发展,以适应新时代的需求,培养符合社会发展的人才。在这个过程中,教育的个性化、精准化将成为提升教育质量和影响力的关键。
2. 直面问题:勇敢面对压力,将其转化为动力,通过提高效率和自我管理来减轻负担。 总之,公务员需要了解并掌握心理调试技巧,以便在面对工作和生活压力时能有效应对,保持良好的心理健康,从而更好地履行公职,...
在社会层面,群体压力、权力结构、文化规范等也可能导致人们不愿直面问题。例如,家庭成员面对亲友的成瘾问题,可能会选择不谈论,以维持表面的平静。 其次,书中提到的“房间里的大象”现象广泛存在于日常生活中,...
这三个问题分别从个人责任、官员职责、国家治理三个方面层层递进,揭示了孟子关注民生、重视国家治理的理念,显示出他是一个关心人民疾苦,敢于直面问题的思想家。孟子的问题旨在批评那些不尽职尽责、逃避责任的人,...
其次,需要摒弃“报喜得喜、报忧得忧”的传统观念,敢于直面问题,合理反映问题。此外,组工信息工作应该从重数量转变为重质量,重点提高信息的采用率,提升信息工作的整体水平。 文章还强调了信息工作的四个转变,...
4. **心智成熟**:逃避问题只会阻碍心智的成长,只有直面问题并寻求解决之道,我们才能实现自我提升,成为更好的自己。 5. **希望与鼓励**:PPT的结尾传递出积极的信息,希望每个人都活出精彩,鼓励大家在面对困难...
通过自我反省,学生体验到直面问题的重要性,发现很多答案往往在实际行动中自然显现,而非仅靠口头劝导。他们意识到迟到是可以轻易避免的行为,过去的侥幸心态是导致问题的主要原因。学生向老师承诺,除非遭遇...
12. B选项表明教练应直面问题,但也要有同理心,鼓励开放的对话。 13. A选项鼓励员工独立解决问题,增强自信,符合教练式管理的宗旨。 14. B选项允许员工自主选择,尊重他们的决策权,同时提供反馈。 15. C选项...
面对挫折,人们有时选择抱怨来避免直面问题。然而,这并不能真正解决问题,反而可能削弱个人的自信心。抱怨者在不断地否定和自我怀疑中,逐渐丧失了应对困难的勇气和能力。真正的成长来自直面挑战,而不是抱怨它们。...
在生产线上实施QRQC,意味着要快速响应生产线上的异常,通过现场(Genba)、实物(Genbutsu)和实际情况(Genjitsu)的三现主义原则,直面问题,找出问题的根源。三现主义是日本企业管理中的一种实践哲学,要求管理...
- 竖直面问题:涉及重力、摩擦力和阻力,如物体被抛出后上升和下降过程中能量的转换。 - 斜面问题:分析斜面角度、摩擦力与重力分量的关系,求解物体在斜面上的滑行距离和速度。 - 圆弧和圆周运动:物体在曲面上...
- 竖直面问题中,需要考虑重力、摩擦力和阻力的作用,通过动能定理可以求解人对物体所做的功或者求解空气阻力与重力的比值。 - 斜面问题则涉及到摩擦力与重力分力的关系,以及无机械能损失的情况。 - 圆弧问题中,...
敢于直面问题有助于提前防止重大失误。 12. 避免复杂术语:尽量避免使用难以理解的词汇和指标。如果需要使用专业名词,应提供简单易懂的解释,便于读者理解。 13. 致谢与团队合作:感谢为报告做出贡献的人,如数据...
总结来说,《没有任何借口》提供了一种提升个人和团队效能的思维方式,它鼓励人们直面问题,承担责任,不断超越自我,这对于个人职业生涯和教育行业都有着深远的影响。无论在哪个领域,我们都应该摒弃借口,专注于...
20. **模型优缺点分析**:清楚认识模型的不足,直面问题。 21. **清晰表达**:逻辑清晰、结构严谨是论文的基本要求。 22. **物理模型对应**:涉及物理问题时,注意物理定律与数学模型的对应。 23. **解题角度**:...
直面问题,及时解决,能体现分析的价值。 12. 避免复杂词汇:尽量使用通俗易懂的语言,必要时提供名词解释,以免增加读者的理解难度。 13. 感谢与分享:最后,要感谢所有参与和支持分析工作的人,表达对他们贡献的...