大家肯定都听说过防御性编程。
防御性编程( Defensive programming )是防御式设计的一种具体体现,它是为了保证,对程序的不可预见的使用,不会造成程序功能上的损坏。它可以被看作是为了减少或消除墨菲定律效力的想法。防御式编程主要用于可能被滥用,恶作剧或无意地造成灾难性影响的程序上。——百度百科
在防御性编程中,我们时刻认为输入不合法,需要添加各种判断。比如:
if(input == null){
return;
}
那你听说过防御性开发吗?
防御性开发( Defensive developing )是有经验的开发者探索出的一种开发方式,它为了保证对开发过程中反反复复的需求变动,不会造成开发工期上的影响。它可以被看做是为了减少或消除因反复变更需求带来的巨大工作量。 ——我编的
在防御性开发中,当需求去掉一个功能时,我们往往选择注释相关代码而不是直接删除。当逻辑条件变更时,我们往往保留判断语句而不是重构代码。从而导致一些奇奇怪怪的代码,尤其是接手没有注释的代码时,比如:
boolean flag = true;
//2017.08.11 需求变更,去掉 XXXX 限制,产品说后期可能加回来
//flag = checkSomething();
if(flag){
doSomething();
}
It's just a joke。各位脑洞大开的程序猿一起来吐槽看过的这种奇奇怪怪的代码、交流、玩这个梗吧 当我看到莫名其妙的代码提问时,别人总会煞有介事的指点一番“嗯,这是防御性开发,高手啊!”
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.