【戏说御式编程◎宁可千年不入道,不可一日入魔道】
https://t.cn/A6lUqrv6
原创 陈正勇
这几天上网,经常看到一个名词:防御式编程。开始没在意,但看到次数多了,不禁感到好奇。一个编程常识,怎么这么多人在说。仔细一看,原来是旧词新解:
35岁以上的程序员,为了不被公司优化掉,故意将代码写的只有自己能看到的懂,别人想改都不知如何下手。
真的是很无奈,一个好好的词又被毁掉了。防御式编程的含义本意是宽进严出,也就是通常说的程序健壮性:在输入有错误的情况下,也能得到较好的结果。HTML 就是这样一个例子,即使包含错误,浏览器也能尽可能的展现出来。
我也能体会到这其中的心酸,不是被逼无奈,没人愿意这么干。但我不建议这种做法。
首先,这种做法其实起不了多大效果。作为一名接手过很多代码的老手来说,即使不是刻意为之,遗留代码就是传说中的“屎山”。补丁加补丁,维护起来提心吊胆,根本就不在乎你这多添的一坨屎。这可不是夸大其词。比如 Hacker News 上有一则讨论,「你见过的最大规模的烂代码是什么?」,有 Oracle 内部员工吐槽:
甲骨文数据库 12.2 版本,差不多有 2500 万行 C 代码。
这简直是难以想象的恐怖!在这个产品中,改动任何一行代码都会导致成千上万的现有测试失败。几代程序员在严峻的截止日期下工作,使代码充满了各种杂乱。
非常复杂的逻辑、内存管理、上下文切换等都是由成千上万的标志维系在一起。整个代码充满了神秘的宏,没有拿笔记本手动展开宏的相关部分,是无法理解的。理解一个宏的作用可能需要一到两天。
有时候,需要了解 20 个不同标志的值和效果,才能预测代码在不同情况下的表现。有时甚至需要了解上百个。我并不夸张。
这个产品之所以还能存活并运行,完全是因为数以百万计的测试!
这可是外国著名公司,尚且如此,国内更不用说。很多开发人员都有这种感受,接手别人的代码,恨不得上去重写一遍。
所以说,这种防御式编程,典型的损人不利己。代码写得再绕来绕去,别人顶多无视,基本上是哪里出问题改哪里。再说你写了一段难懂的代码,你保证过了一段时间能看懂?这不是也坑了自己吗?
其次,这种说法虽说是某鹅厂传出的,但我总觉得这是一个段子。大厂的代码审核还是挺严格的,特别是对于上线的产品,每一个改动都需要详细说明理由,否则过不了审。在这种情况下,你想防御式编程,早就死翘翘了。也只有在少数小公司,没有代码 review,也许可以过关。但还是有代码提交记录。万一哪一天主管心血来潮,查看一下代码提交记录,这点小心思,还是很容易看出。这种状况下,在公司还怎么混?
最后,人还是得走正道。这种歪门邪道走多了,容易入魔道。今天你做了个防御式编程,明天你可能觉得还是不保险,干脆植入个后门,这样杀伤力更大。殊不知,这样做妥妥的违法,是要进去的,这样的例子我身边就有。
虽然大环境不行,但这不是我们作恶的理由。
namo-amitabhaya!
https://t.cn/A6lUqrv6
原创 陈正勇
这几天上网,经常看到一个名词:防御式编程。开始没在意,但看到次数多了,不禁感到好奇。一个编程常识,怎么这么多人在说。仔细一看,原来是旧词新解:
35岁以上的程序员,为了不被公司优化掉,故意将代码写的只有自己能看到的懂,别人想改都不知如何下手。
真的是很无奈,一个好好的词又被毁掉了。防御式编程的含义本意是宽进严出,也就是通常说的程序健壮性:在输入有错误的情况下,也能得到较好的结果。HTML 就是这样一个例子,即使包含错误,浏览器也能尽可能的展现出来。
我也能体会到这其中的心酸,不是被逼无奈,没人愿意这么干。但我不建议这种做法。
首先,这种做法其实起不了多大效果。作为一名接手过很多代码的老手来说,即使不是刻意为之,遗留代码就是传说中的“屎山”。补丁加补丁,维护起来提心吊胆,根本就不在乎你这多添的一坨屎。这可不是夸大其词。比如 Hacker News 上有一则讨论,「你见过的最大规模的烂代码是什么?」,有 Oracle 内部员工吐槽:
甲骨文数据库 12.2 版本,差不多有 2500 万行 C 代码。
这简直是难以想象的恐怖!在这个产品中,改动任何一行代码都会导致成千上万的现有测试失败。几代程序员在严峻的截止日期下工作,使代码充满了各种杂乱。
非常复杂的逻辑、内存管理、上下文切换等都是由成千上万的标志维系在一起。整个代码充满了神秘的宏,没有拿笔记本手动展开宏的相关部分,是无法理解的。理解一个宏的作用可能需要一到两天。
有时候,需要了解 20 个不同标志的值和效果,才能预测代码在不同情况下的表现。有时甚至需要了解上百个。我并不夸张。
这个产品之所以还能存活并运行,完全是因为数以百万计的测试!
这可是外国著名公司,尚且如此,国内更不用说。很多开发人员都有这种感受,接手别人的代码,恨不得上去重写一遍。
所以说,这种防御式编程,典型的损人不利己。代码写得再绕来绕去,别人顶多无视,基本上是哪里出问题改哪里。再说你写了一段难懂的代码,你保证过了一段时间能看懂?这不是也坑了自己吗?
其次,这种说法虽说是某鹅厂传出的,但我总觉得这是一个段子。大厂的代码审核还是挺严格的,特别是对于上线的产品,每一个改动都需要详细说明理由,否则过不了审。在这种情况下,你想防御式编程,早就死翘翘了。也只有在少数小公司,没有代码 review,也许可以过关。但还是有代码提交记录。万一哪一天主管心血来潮,查看一下代码提交记录,这点小心思,还是很容易看出。这种状况下,在公司还怎么混?
最后,人还是得走正道。这种歪门邪道走多了,容易入魔道。今天你做了个防御式编程,明天你可能觉得还是不保险,干脆植入个后门,这样杀伤力更大。殊不知,这样做妥妥的违法,是要进去的,这样的例子我身边就有。
虽然大环境不行,但这不是我们作恶的理由。
namo-amitabhaya!
双子座:根本没有理由,不会出类拔萃
对于双子座女来说,向来都是属于那种,产出女神最多的星座。这必然缺少不了她们的容貌,从来都是一等一的,同时,她们会打扮,她们有气质,而且她们也尤其具备着一份相当高的情商。以至于这一路走来,不但从来缺少不了异性的追求者,即便是同性,也总对她们相当的青睐。
当然了,要说起才华的话,双子座女更是一点不会缺少,而且放在十二星座里面,也必然是名列前茅。这点她们与水瓶座颇为相似,因为本身就是高智商,就是非常聪明的一类人,而与此同时,又从来缺少不了一份好奇心,以及求知欲。于是他们也根本没有理由,不会出类拔萃。
当然了,唯独谈及到双子座女的感情,又或者说尤其是爱情的时候,人们对于她们的评价从来不会很高。这最明显的就在于,双子座女大概从来不会拒绝主动靠近她们的异性,而且在很大程度上,彼此的距离也都是说不清的暧昧,甚至像极了一个渣女。
可事实上,双子座女完全不是我们想的这个样子。她们也不过是,具备着风象星座的普遍特点,尤其在没有认准一个人的时候,必然飘忽不定,必然不在乎一些外人的看法罢了。可一旦认准了之后,不好意思,双子座女真的格外的专一,真的无比的执着,从来不会轻易的变心,因此也完全可以称得上,一个名副其实的宝藏女孩。#暖冬许愿季#
对于双子座女来说,向来都是属于那种,产出女神最多的星座。这必然缺少不了她们的容貌,从来都是一等一的,同时,她们会打扮,她们有气质,而且她们也尤其具备着一份相当高的情商。以至于这一路走来,不但从来缺少不了异性的追求者,即便是同性,也总对她们相当的青睐。
当然了,要说起才华的话,双子座女更是一点不会缺少,而且放在十二星座里面,也必然是名列前茅。这点她们与水瓶座颇为相似,因为本身就是高智商,就是非常聪明的一类人,而与此同时,又从来缺少不了一份好奇心,以及求知欲。于是他们也根本没有理由,不会出类拔萃。
当然了,唯独谈及到双子座女的感情,又或者说尤其是爱情的时候,人们对于她们的评价从来不会很高。这最明显的就在于,双子座女大概从来不会拒绝主动靠近她们的异性,而且在很大程度上,彼此的距离也都是说不清的暧昧,甚至像极了一个渣女。
可事实上,双子座女完全不是我们想的这个样子。她们也不过是,具备着风象星座的普遍特点,尤其在没有认准一个人的时候,必然飘忽不定,必然不在乎一些外人的看法罢了。可一旦认准了之后,不好意思,双子座女真的格外的专一,真的无比的执着,从来不会轻易的变心,因此也完全可以称得上,一个名副其实的宝藏女孩。#暖冬许愿季#
让军工企业家和吃[回扣]的政客变得更富有也能算保障经济增长的话那我无话可说,这些本属于国家和人民的钱,这些美国人民上交的血汗钱,这些本该拿来发展经济,改善民生,帮助穷人,让儿童生活在更好环境中的钱,就这样通过一份份军火订单成为军工企业家的钱,然后军工企业家会拿一部份钱[感谢]政客.
当美国人民生活在水深火热之中,美国的大人物心里想的全是[维护全球霸权][做生意赚钱].根本不在乎美国人民的死活.
布林肯先生的话可以这样理解,在他们看来,让军工企业家和政客变得更富有就是保障经济增长,而至于最广大的美国人民,哈,一点都不重要.
当美国人民生活在水深火热之中,美国的大人物心里想的全是[维护全球霸权][做生意赚钱].根本不在乎美国人民的死活.
布林肯先生的话可以这样理解,在他们看来,让军工企业家和政客变得更富有就是保障经济增长,而至于最广大的美国人民,哈,一点都不重要.
✋热门推荐