故意把代码写得很烂,这样的 “防御性编程“ 可取吗?

简介: 故意把代码写得很烂,这样的 “防御性编程“ 可取吗?

传统意义的 “防御性编程” 是说采取一些预防措施来确保代码的稳健性和可靠性,

最近两年,网上讨论 “防御性编程” 的声音多了很多,

但是这里大家讨论的 “防御性编程” 可不是传统意义上的概念,

简单地说,就是写一些 “别人看不懂,只有自己能看懂,甚至自己也看不懂,只有机器能懂” 的代码。

大家的想法大概是这样的:如果哪天自己被裁了,公司也难以快速搞懂这些代码,相当于留了个 “后手”。

说到怎么实现这个 “防御性编程” ,很多互联网大厂员工也开始纷纷 “整活”,提出了各种防御性编程的 “奇思妙想”,比如:

  • 就算是最简单的业务逻辑,也要往复杂里写,最好别人都看不懂
  • 能多用几个设计模式就多用几个设计模式,不能用也要创造条件用,把代码结构搞得越难以理解越难以维护越好
  • 一个方法能搞定的,坚决不写第二个,把所有的业务逻辑都写到一个方法,最好写个几百行,让谁都不敢改
  • 条件语句也要多用几层,一层嵌套一层,把它做成迷宫最好,让老鼠进来也要晕头转向
  • 变量和方法命名时最好使用无意义的字母组合,代码的可读性越差越好,也不要写注释,有本事你们自己读懂

……

如果真的按这些 “奇思妙想” 写代码,不光别人看不懂,恐怕过个三两月,估计作者自己也看不懂了,真的就只有计算机才能看懂了!

但是,这样真的好吗?

虽然有很多人拍手称好,我倒是觉得这样对于程序员来说,是弊大于利的,理由如下:

首先,这样做违背职业道德,损害了程序员自身的职业声誉。程序 员的立身之本不是技术,而是信誉,软件开发的圈子说小不小,说大其实也没那么大,如果你的声誉不好,未来的发展肯定走不远,没必要为了一口饭而丢掉自己的信誉。

其次,故意编写难以理解的代码,不利于个人技能的成长。代码的魅力在于重构,在重构的过程中,你一遍遍地优化代码,你就有动力去学习更多更好的技术,慢慢地,掌握的技术就会融汇贯通,最终代码变得优雅,性能变得高效,你也成为一个人人称颂的技术大牛。反而,如果你总是将心思放在如何把代码写得更 “烂”,你就没有动力去学习,这样你就不会有成长,也许你会说,你会私下学习新技术,但如果新技术不真正应用在真实项目里,永远都不会变成你自己的技术!

再次,故意编写难以理解的代码,反而可能会让你更快地丢掉 “饭碗”,因为质量差的代码肯定会导致团队效率降低,出错的机率也更大,这样会更打击团队的士气,这样的产品客户也不愿意用,这样的情况不是更容易让老板坚定裁员的决心吗?

最后,做过企业的老杨更清楚,当一个企业效益不好的时候,为了自保,往往都是整个部门整条业务线裁掉,你把自己 “包装” 得再难以替代都是无济于事的,所以,把心思花在如果把代码写 “烂” 上,真的是一件性价比很低的活,不如把这个时间用来好好提高自己的能力!

总而言之,程序员搞防御性编程固然可以理解,现在确实有一些企业做得很不好,比如变相裁员、无征兆裁员、想方设法不给赔偿等等,伤害了程序员的心,但这样子做,短期来看,是程序员和企业的互相伤害;长期来看,对程序员自身的伤害更大!因此,我觉得程序员最好在上班的时间还是一门心思地提高自己,写出可靠的代码,这样既对得起自己的职业良知,也提高了自己,何乐而不为,只要自身水平高,真的被裁员了也不怕,拿一笔赔偿到别的企业上班,不是更香吗?哈哈…… 你觉得有道理吗?欢迎留言讨论!

我是老杨,一个执着于编程乐趣、至今奋斗在一线的 10年+ 资深研发老鸟,是软件项目管理师,也是快乐的程序猿,持续分享全栈实用编程技巧、项目管理经验和职场成长心得。欢迎关注老杨的公众号,相互交流,共同进步!


相关文章
|
8月前
|
IDE 安全 程序员
揭秘如何用C编写出无敌的程序代码,你绝对会后悔错过!
揭秘如何用C编写出无敌的程序代码,你绝对会后悔错过!
50 1
|
设计模式 SQL Java
有点狠有点猛,我用责任链模式重构了业务代码
文章开篇,抛出一个老生常谈的问题,学习设计模式有什么作用? 设计模式主要是为了应对代码的复杂性,让其满足开闭原则,提高代码的扩展性 另外,学习的设计模式 一定要在业务代码中落实,只有理论没有真正实施,是无法真正掌握并且灵活运用设计模式的 这篇文章主要说 责任链设计模式,认识此模式是在读 Mybatis 源码时, Interceptor 拦截器主要使用的就是责任链,当时读过后就留下了很深的印象(内心 OS:还能这样玩)
|
安全 编译器 网络安全
一些碎碎念以及类和对象零碎知识点补充
一些碎碎念以及类和对象零碎知识点补充
116 0
一些碎碎念以及类和对象零碎知识点补充
|
Python
又烧脑又炫技还没什么用,在代码里面打印自身
又烧脑又炫技还没什么用,在代码里面打印自身
226 0
又烧脑又炫技还没什么用,在代码里面打印自身
|
数据库
【硬着头皮】 比较两个数大小,麻烦写得整洁点
【硬着头皮】 比较两个数大小,麻烦写得整洁点
123 0
【硬着头皮】 比较两个数大小,麻烦写得整洁点
|
JSON Java 测试技术
如何写出让人抓狂的代码?
如何写出让人抓狂的代码?
如何写出让人抓狂的代码?
|
安全 程序员 编译器
代码防御性编程的十条技巧
代码防御性编程的十条技巧
273 0
代码防御性编程的十条技巧
|
存储 程序员 C++
如果当初学习编程时能有人给我这些忠告该多好
Cecily Carver 是多伦多的一位程序媛,和 Jennie Faber 一起创办了一个游戏制作工作室。她喜欢歌剧、舞蹈和弹钢琴。Cecily 在这篇文章分享她在编程道路上的所感所想,给出很多值得思考的编程箴言以及一些思想误区,比如在你学习编程之前思考一下你的目标、编程不是什么神秘的东西、坚持比方法更重要等,可以让我们在编程路上少走一些弯路,从而有更多的时间学习技术让自己变的越来越强大。
233 0
|
程序员
关于编程 鲜为人知的真相
导读:原文来自dotmac.rationalmind.net上一篇《Some lesser-known truths about programming》,译文来自外刊IT评论整理编译《关于编程,鲜为人知的真相》而来。
832 0
|
JavaScript 程序员 C语言
能一眼看懂这些C语言函数,你就是天生的程序员!
喜欢这篇文章的朋友可以多多收藏、点赞、关注 一条龙~
1672 0

热门文章

最新文章