软件开发思想-1-斩草除根

典故

古语有云:“斩草要除根”,这来自一个典故。往年,郑庄公请求与陈国讲和,陈桓公不答应。五父劝谏说:“亲近仁义而和邻国友好,这是国家可宝贵的措施,您还是答应郑国的请求吧!” 陈侯说:“宋国和卫国才是真正的祸患,郑国能做什么?” 于是就没有答应。君子说:“善不可丢失,恶不可滋长,这说的就是陈桓公吧!滋长了恶而不悔改,马上就得自取祸害。纵是挽救,何能办得到!《商书》说:‘恶的蔓延,如同遍地大火,不可以靠拢,难道还能扑灭?’周任有话说:‘治理国和家的人,见到恶,就要像农夫急于除杂草一样,锄掉它聚积起来肥田,挖掉它的老根,不要使它再生长,那么善的事物就能发展了。’”

所以,古代皇帝惩罚一个罪大恶极的人,会选择诛其九族,这样不会遗留祸害。

唐朝白居易名诗:离离原上草,一岁一枯荣。野火烧不尽,春风吹又生。说得就是这个道理。

 

软件开发

我们知道,一个系统,没有办法做到bug free。每个系统都有bug,或大或小,或明显或隐藏得很深。我们做bug修复的时候,关注点不是表象,因为一些时候,我们会陷入误区:只要呈现出来的问题不再被观测得到,那问题就是被修复。

或许大家听过Heisenbug这个词,以下是维基百科的摘录:

在程序设计术语中,海森堡bug(英语:heisenbug)是指在尝试研究它时似乎会消失或者改变行为的bug(程序错误)。该词汇是物理学家维尔纳·海森堡名字的双关语,他最先断言了量子力学的观察者效应——观察系统的行为不可避免地将改变其状态。电子学中的传统用语则是探针效应,指连接一个测试探针到设备将改变其行为。

类似的词语有玻尔bug(bohrbug)、曼德博bug(mandelbug)和薛定谔bug(schrödinbug),它们偶尔被用于指代其他类型的非寻常软件缺陷,但通常以开玩笑的心态使用。

很多时候,我们对bug进行排查、重现,这个bug就是不出现,或者更糟糕的是:随机出现。

所以,我们不应该只修复症状,而应该找到根源问题,并且修复之。

 

爆栈服务

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

软件设计系列-1-设计思想

DRY,就是don’t repeat yourself不要重复。相反的做法是WET:write everything twice,类似re-invent the wheel,重复发明轮子。

类似的思想如KISS(keep it simple、保持简单)、YANGNI(you aren’t gonna need it,你并不需要那些东西)。

大道至简,我们不应该over-engineering过度设计,但是适当的前瞻性设计是需要的。譬如扩展性等,否则产品一上线就遇到各种限制。

 

Related image

 

名言

“Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.” 在编程的时候,我们一定要想象一下,以后维护我们自己的代码的那个人会成为一个暴力的精神病人,并且,他还知道我们住在哪里。
— John Woods
Think twice, code once。磨刀不误砍柴工,多思考,再写代码。
Good crafsmanship depends on use of the right tools.工欲善其事,必先利其器

技术债务

英文是Technical Debt。出来混的,迟早要还。欠下的债,也是要还的。做技术也一样,而且这个债一样会有利息,而且是高利贷那种,你的成本爆涨。最糟糕的是,债台高筑,你根本无法还:系统设计一团糟,性能低下,逻辑混乱,代码质量无法维护。

 

爆栈之旅

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。