最近程序员界又重新流行起来了防御性编程这个概念,早期嘞,这个概念代表是一种细致、谨慎的编程方法。
防御性编程的目的是为了开发可靠的软件,我们在设计系统中每个组件的时候,都需要使其尽可能的 "保护" 自己。
但是 2023 年以来,国内的互联网市场是什么行情,相信大家都清楚,整个市场环境都在强调降本增效、开猿节流。
因此为了体现程序员们在公司代码中的不可替代性?防止被裁。"防御性编程" 概念又重新流行了起来。
不过这次它可不再是保护程序了,而是保护广大程序员群体 😎。
所以我就给大家介绍一下,新时代背景下的 "防御性" 编程理念,如何实践 😜。
本文大纲如下,
图片
代码书写
变量名称使用单一字符
Java 语言里变量名只能由 Unicode 字母、数字、下划线或美元符号组成,并且第一个字符不能是数字。
那么对于单一字符的变量名称来说,26 个字母大写加 26 个字母小写加下划线以及美元符一共有 54 种变量名称,想一想难道这些还不够你在单个 Java 文件里给变量命名用吗?
兄弟这一般够用了。
使用中文命名
兄弟,大家都是中国人,肯定看得懂中文咯。
图片
就问你,Idea 支不支持吧,有没有提示说你变量名不规范嘛!没提示就是规范。
还有一点,兄弟们,还记得上面 Java 语言里变量名组成规范吗?中文也在 Unicode 编码里面,所以其实我们还可以用中文作为变量名称。
我已经帮你查好了,Java 里常用的 utf-8 编码下,支持的中文字符有 20902 个,所以上面单一字符的变量名称还需要新增 20902 种 😃,简直完美。
图片
使用多国语言命名
图片
不多说,我就问你看不看得懂吧,看得懂算你厉害,看不懂算你技术不行。
你问我看不看得懂,我当然看的懂,我写的,我请百度翻译的 😝。
图片
这些变量名称命名法则,不仅适用与 Java,也适用于 JavaScript,广大前端程序员也有福了。
CV 大法
不要抽象、不要封装、不要继承、不要组合,我只会 CV。
抽象
抽象:我可以让调用者只需要关心方法提供了哪些功能,而不需要知道这些功能是如何实现的。我的好处是可以减少信息的复杂度,提高代码的可读性和易用性,也方便了代码的修改和扩展,我厉害吧。
我:我只会 CV。
抽象:...
封装
封装:我可以把数据和基于数据的操作封装在一起,使其构成一个独立的实体,对外只暴露有限的访问接口,保护内部的数据不被外部随意访问和修改。我的好处是可以增强数据的安全性和一致性,减少代码的耦合性,也提高了类的易用性。看见没,我比抽象好懂吧。
我:我只会 CV。
封装:...
继承
继承:我可以让一个类继承另一个类的属性和方法,从而实现代码的复用和扩展。我可以表示类之间的 is-a 关系,体现了类的层次结构和分类。我的好处是可以避免代码的重复,简化类的定义,也增加了代码的维护性。我可是面向对象三大特征之一。
我:我只会 CV。
继承:...
组合
组合:我可以让一个类包含另一个类的对象作为自己的属性,从而实现代码的复用和扩展。我可以表示类之间的 has-a 关系,体现了类的关联和聚合。我的好处是可以增加类的灵活性和可变性,也降低了类之间的耦合性。不要用继承,我可是比继承更优秀的。
我:我只会 CV。
组合:...
不要问为什么我只会 CV,因为我的键盘只有 CV。
图片
刚出道时我们嘲讽 CV,后来逐渐理解 CV,最后我们成为 CV。
CV 的越多,代码就越复杂,代码越复杂,同事就越难看懂,同事越难看懂,就越难接手你的代码,你的不可替代性就越来越强。
那么我们防御性编程的目的不久达到了嘛。
兄弟,听我说,给你的代码上防御,是为了你好!
产品开发
运营配置、开发配置、系统配置直接写死,用魔法值,没毛病。
产品每次提需求,代码实现一定要做到最小细粒度实现,做到需求里少一个字,我的代码里绝不会多一个词,注释也是不可能有的,我写的代码只有我看得懂不是防御性编程的基操吗?
我的代码我做主。
产品原型不提,我绝对不会问。要做到这系统有你才能每一次发版上线都是相安无事,一旦缺少了你,鬼知道会发生什么。
我们能做的就是牢牢把握项目中核心成员的位置。这个项目组少了你,绝对不行!
最后聊两句
2023 全年都在降本增效,节能开猿的浪潮下度过。
虽然本文是给大家将防御性编程如何实践,但是我还是希望每一个互联网打工人都能平稳度过这波寒冬。
积蓄力量,多思考,多元发展。
在来年,春暖花开,金三银四之月,都能找到自己满意的工作,得到属于自己的果实。