程式設計師為保飯碗,開始”防禦性程式設計”….

👉 這是一個或許對你有用的社群
🐱 一對一交流/面試小冊/簡歷最佳化/求職解惑,歡迎加入芋道快速開發平臺知識星球。下面是星球提供的部分資料:
👉這是一個或許對你有用的開源專案
國產 Star 破 10w+ 的開源專案,前端包括管理後臺 + 微信小程式,後端支援單體和微服務架構。
功能涵蓋 RBAC 許可權、SaaS 多租戶、資料許可權、商城、支付、工作流、大屏報表、微信公眾號、CRM 等等功能:
  • Boot 倉庫:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 倉庫:https://gitee.com/zhijiantianya/yudao-cloud
  • 影片教程:https://doc.iocoder.cn
【國內首批】支援 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 雙版本 

最近程式設計師界又重新流行起來了防禦性程式設計這個概念,早期嘞,這個概念代表是一種細緻、謹慎的程式設計方法。
防禦性程式設計的目的是為了開發可靠的軟體,我們在設計系統中每個元件的時候,都需要使其儘可能的 "保護" 自己。
但是 2023 年以來,國內的網際網路市場是什麼行情,相信大家都清楚。
因此為了體現程式設計師們在公司程式碼中的不可替代性?"防禦性程式設計" 概念又重新流行了起來。
不過這次它可不再是保護程式了,而是保護廣大程式設計師群體 😎。

所以我就給大家介紹一下,新時代背景下的 "防禦性" 程式設計理念,如何實踐 😜。
本文大綱如下,

程式碼書寫

變數名稱使用單一字元

Java 語言裡變數名只能由 Unicode 字母、數字、下劃線或美元符號組成,並且第一個字元不能是數字 。
那麼對於單一字元的變數名稱來說,26 個字母大寫加 26 個字母小寫加下劃線以及美元符一共有 54 種變數名稱,想一想難道這些還不夠你在單個 Java 檔案裡給變數命名用嗎?
兄弟這一般夠用了。

使用中文命名

兄弟,大家都是中國人,肯定看得懂中文咯。

就問你,Idea 支不支援吧,有沒有提示說你變數名不規範嘛!沒提示就是規範。
還有一點,兄弟們,還記得上面 Java 語言裡變數名組成規範嗎?中文也在 Unicode 編碼裡面,所以其實我們還可以用中文作為變數名稱。
我已經幫你查好了,Java 裡常用的 utf-8 編碼下,支援的中文字元有 20902 個,所以上面單一字元的變數名稱還需要新增 20902 種 😃,簡直完美。

使用多國語言命名

不多說,我就問你看不看得懂吧,看得懂算你厲害,看不懂算你技術不行。

你問我看不看得懂,我當然看的懂,我寫的,我請百度翻譯的 😝。

這些變數名稱命名法則,不僅適用與 Java,也適用於 JavaScript,廣大前端程式設計師也有福了。
基於 Spring Boot + MyBatis Plus + Vue & Element 實現的後臺管理系統 + 使用者小程式,支援 RBAC 動態許可權、多租戶、資料許可權、工作流、三方登入、支付、簡訊、商城等功能
  • 專案地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 影片教程:https://doc.iocoder.cn/video/

CV 大法

不要抽象、不要封裝、不要繼承、不要組合,我只會 CV。

抽象

抽象:我可以讓呼叫者只需要關心方法提供了哪些功能,而不需要知道這些功能是如何實現的。我的好處是可以減少資訊的複雜度,提高程式碼的可讀性和易用性,也方便了程式碼的修改和擴充套件,我厲害吧。
我:我只會 CV。
抽象:…

封裝

封裝:我可以把資料和基於資料的操作封裝在一起,使其構成一個獨立的實體,對外只暴露有限的訪問介面,保護內部的資料不被外部隨意訪問和修改。我的好處是可以增強資料的安全性和一致性,減少程式碼的耦合性,也提高了類的易用性。看見沒,我比抽象好懂吧。
我:我只會 CV。
封裝:…

繼承

繼承:我可以讓一個類繼承另一個類的屬性和方法,從而實現程式碼的複用和擴充套件。我可以表示類之間的 is-a 關係,體現了類的層次結構和分類。我的好處是可以避免程式碼的重複,簡化類的定義,也增加了程式碼的維護性。我可是面向物件三大特徵之一。
我:我只會 CV。
繼承:…

組合

組合:我可以讓一個類包含另一個類的物件作為自己的屬性,從而實現程式碼的複用和擴充套件。我可以表示類之間的 has-a 關係,體現了類的關聯和聚合。我的好處是可以增加類的靈活性和可變性,也降低了類之間的耦合性。不要用繼承,我可是比繼承更優秀的。
我:我只會 CV。
組合:…
不要問為什麼我只會 CV,因為我的鍵盤只有 CV。

剛出道時我們嘲諷 CV,後來逐漸理解 CV,最後我們成為 CV。
CV 的越多,程式碼就越複雜,程式碼越複雜,同事就越難看懂,同事越難看懂,就越難接手你的程式碼,你的不可替代性就越來越強。
那麼我們防禦性程式設計的目的不久達到了嘛。
兄弟,聽我說,給你的程式碼上防禦,是為了你好!

基於 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的後臺管理系統 + 使用者小程式,支援 RBAC 動態許可權、多租戶、資料許可權、工作流、三方登入、支付、簡訊、商城等功能
  • 專案地址:https://github.com/YunaiV/yudao-cloud
  • 影片教程:https://doc.iocoder.cn/video/

產品開發

運營配置、開發配置、系統配置直接寫死,用魔法值,沒毛病。
產品每次提需求,程式碼實現一定要做到最小細粒度實現,做到需求裡少一個字,我的程式碼裡絕不會多一個詞,註釋也是不可能有的,我寫的程式碼只有我看得懂不是防禦性程式設計的基操嗎?
我的程式碼我做主。
產品原型不提,我絕對不會問。要做到這系統有你才能每一次發版上線都是相安無事,一旦缺少了你,鬼知道會發生什麼。
我們能做的就是牢牢把握專案中核心成員的位置。這個專案組少了你,絕對不行!

最後聊兩句

雖然本文是給大家將防禦性程式設計如何實踐,但是我還是希望每一個網際網路打工人都能平穩度過這波寒冬。
積蓄力量,多思考,多元發展。
在來年,春暖花開,金三銀四之月,都能找到自己滿意的工作,得到屬於自己的果實。

歡迎加入我的知識星球,全面提升技術能力。
👉 加入方式,長按”或“掃描”下方二維碼噢
星球的內容包括:專案實戰、面試招聘、原始碼解析、學習路線。

文章有幫助的話,在看,轉發吧。
謝謝支援喲 (*^__^*)

相關文章