防御性編程?這不就來了
最近程序員界又重新流行起來了防御性編程這個概念,早期嘞,這個概念代表是一種細致、謹慎的編程方法。
防御性編程的目的是為了開發(fā)可靠的軟件,我們在設(shè)計系統(tǒng)中每個組件的時候,都需要使其盡可能的 "保護" 自己。
但是 2023 年以來,國內(nèi)的互聯(lián)網(wǎng)市場是什么行情,相信大家都清楚,整個市場環(huán)境都在強調(diào)降本增效、開猿節(jié)流。
因此為了體現(xiàn)程序員們在公司代碼中的不可替代性?防止被裁。"防御性編程" 概念又重新流行了起來。
不過這次它可不再是保護程序了,而是保護廣大程序員群體 ??。
所以我就給大家介紹一下,新時代背景下的 "防御性" 編程理念,如何實踐 ??。
本文大綱如下,
圖片
代碼書寫
變量名稱使用單一字符
Java 語言里變量名只能由 Unicode 字母、數(shù)字、下劃線或美元符號組成,并且第一個字符不能是數(shù)字。
那么對于單一字符的變量名稱來說,26 個字母大寫加 26 個字母小寫加下劃線以及美元符一共有 54 種變量名稱,想一想難道這些還不夠你在單個 Java 文件里給變量命名用嗎?
兄弟這一般夠用了。
使用中文命名
兄弟,大家都是中國人,肯定看得懂中文咯。
圖片
就問你,Idea 支不支持吧,有沒有提示說你變量名不規(guī)范嘛!沒提示就是規(guī)范。
還有一點,兄弟們,還記得上面 Java 語言里變量名組成規(guī)范嗎?中文也在 Unicode 編碼里面,所以其實我們還可以用中文作為變量名稱。
我已經(jīng)幫你查好了,Java 里常用的 utf-8 編碼下,支持的中文字符有 20902 個,所以上面單一字符的變量名稱還需要新增 20902 種 ??,簡直完美。
圖片
使用多國語言命名
圖片
不多說,我就問你看不看得懂吧,看得懂算你厲害,看不懂算你技術(shù)不行。
你問我看不看得懂,我當然看的懂,我寫的,我請百度翻譯的 ??。
圖片
這些變量名稱命名法則,不僅適用與 Java,也適用于 JavaScript,廣大前端程序員也有福了。
CV 大法
不要抽象、不要封裝、不要繼承、不要組合,我只會 CV。
抽象
抽象:我可以讓調(diào)用者只需要關(guān)心方法提供了哪些功能,而不需要知道這些功能是如何實現(xiàn)的。我的好處是可以減少信息的復(fù)雜度,提高代碼的可讀性和易用性,也方便了代碼的修改和擴展,我厲害吧。
我:我只會 CV。
抽象:...
封裝
封裝:我可以把數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,使其構(gòu)成一個獨立的實體,對外只暴露有限的訪問接口,保護內(nèi)部的數(shù)據(jù)不被外部隨意訪問和修改。我的好處是可以增強數(shù)據(jù)的安全性和一致性,減少代碼的耦合性,也提高了類的易用性。看見沒,我比抽象好懂吧。
我:我只會 CV。
封裝:...
繼承
繼承:我可以讓一個類繼承另一個類的屬性和方法,從而實現(xiàn)代碼的復(fù)用和擴展。我可以表示類之間的 is-a 關(guān)系,體現(xiàn)了類的層次結(jié)構(gòu)和分類。我的好處是可以避免代碼的重復(fù),簡化類的定義,也增加了代碼的維護性。我可是面向?qū)ο笕筇卣髦弧?/p>
我:我只會 CV。
繼承:...
組合
組合:我可以讓一個類包含另一個類的對象作為自己的屬性,從而實現(xiàn)代碼的復(fù)用和擴展。我可以表示類之間的 has-a 關(guān)系,體現(xiàn)了類的關(guān)聯(lián)和聚合。我的好處是可以增加類的靈活性和可變性,也降低了類之間的耦合性。不要用繼承,我可是比繼承更優(yōu)秀的。
我:我只會 CV。
組合:...
不要問為什么我只會 CV,因為我的鍵盤只有 CV。
圖片
剛出道時我們嘲諷 CV,后來逐漸理解 CV,最后我們成為 CV。
CV 的越多,代碼就越復(fù)雜,代碼越復(fù)雜,同事就越難看懂,同事越難看懂,就越難接手你的代碼,你的不可替代性就越來越強。
那么我們防御性編程的目的不久達到了嘛。
兄弟,聽我說,給你的代碼上防御,是為了你好!
產(chǎn)品開發(fā)
運營配置、開發(fā)配置、系統(tǒng)配置直接寫死,用魔法值,沒毛病。
產(chǎn)品每次提需求,代碼實現(xiàn)一定要做到最小細粒度實現(xiàn),做到需求里少一個字,我的代碼里絕不會多一個詞,注釋也是不可能有的,我寫的代碼只有我看得懂不是防御性編程的基操嗎?
我的代碼我做主。
產(chǎn)品原型不提,我絕對不會問。要做到這系統(tǒng)有你才能每一次發(fā)版上線都是相安無事,一旦缺少了你,鬼知道會發(fā)生什么。
我們能做的就是牢牢把握項目中核心成員的位置。這個項目組少了你,絕對不行!
最后聊兩句
2023 全年都在降本增效,節(jié)能開猿的浪潮下度過。
雖然本文是給大家將防御性編程如何實踐,但是我還是希望每一個互聯(lián)網(wǎng)打工人都能平穩(wěn)度過這波寒冬。
積蓄力量,多思考,多元發(fā)展。
在來年,春暖花開,金三銀四之月,都能找到自己滿意的工作,得到屬于自己的果實。