讀《代碼整潔之道》有感

在這里插入圖片描述

最近讀了一本書,名字大家都看到了:《代碼整潔之道》,之前一直只是聽說過這本書的大名,卻一直沒有進行拜讀,最近想起來了就想著看一看,不看不要緊,看了之后就像吃了炫邁,根本停不下來。。。雖然這本書已經出版了十幾年的時間,但里面的理論到現在為止也不過時。

有人也許會以為,關于代碼的書有點兒落后于時代–代碼不再是問題;我們應當關注模型和需求。確實,有人說過我們正在臨近代碼的終結點。很快,代碼就會自動產生出來,不需要再人工編寫。程序員完全沒用了,因為商務人士可以從規約直接生成程序。扯淡!我們永遠拋不掉代碼,因為代碼呈現了需求的細節。在某些層面上,這些細節無法被忽略或抽象,必須明確之。將需求明確到機器可以執行的細節程度,就是編程要做的事。而這種規約正是代碼。

看這本書的那種感覺很奇妙,有時感覺作者說地真對!有時感覺作者罵地真對!有時感覺作者諷刺地真對!還有時看到作者列出的真實代碼中的錯誤示例,再看到作者寫出的優化后的代碼,內心不禁在想:太妙了,代碼本應這樣啊!

沒錯,代碼本應該是整潔的,也本應該是好理解、易擴展的!我們常說的設計模式也并不是一種炫技,而是幾十年來的老前輩們總結出來的經驗,是為了讓你的代碼更好維護的,是一種理所應當。

在工作中遇到爛代碼的可能性是 100%,即使是很厲害的大佬寫的代碼,在不知情的情況下讓你去看,看了一會后都會得出以下結論:“寫的啥玩意啊,看都看不懂,亂七八糟的語法糖,考慮過后面工作的人么?什么設計模式,什么各種模塊,直接寫一塊不好么?” 假設的可能有點夸張,但也都是人之常情。有時工作中遇到的爛代碼是假的,可能是由于當前自己的技術水平不夠,不理解;當然還有一部分可能真的是爛,但是這種情況下還是要做出一些改變!

現在讓大家看幾個月之前自己寫的代碼可能都會覺得寫的一團糟,用當前的眼光來看可能會有更好的方式或方法來實現,如果你有這種想法的話,請付諸實踐!不要等,哪怕是一個單詞的拼寫錯誤、一段本不應該寫兩遍的邏輯、一段沒有進行格式化的代碼。。。。亦或者是比較大規模的代碼改動,改完之后可擴展性會更強,維護起來會更加容易。千萬不要等,不要忍受當前的爛代碼,代碼本就是一直在重構的一個過程,沒有哪段代碼從出來就不改。下面這段話是書里的內容:

我們都曾經瞟一眼自己親手造成的混亂,決定棄之而不顧,走向新一天。我們都曾經看到自己的爛程序居然能運行,然后斷言能運行的爛程序總比什么都沒有強。我們都曾經說過有朝一日再回頭清理。當然,在那些日子里,我們都沒聽過勒布朗(LeBlanc)法則:稍后等于永不(Later equals never).

當然很多人會說:“項目中的屎山代碼,我能在上面雕花已經很厲害了,還要干什么,即使我知道那塊寫的不好,但我也不會去動,因為現在它處于一個穩定的狀態,如果我去修改了之后,出了問題全是自己背,吃力不討好!”這也確實是很多人的現狀,考慮的也不無道理,但在這里咱們單純從代碼的角度來看,從寫代碼的初心來看,早早的就背道而馳了。

代碼格式不可忽略,必須嚴肅對待。代碼格式關平溝通而溝通是專業開發者的頭等大事。 或許你認為“讓代碼能工作”才是專業開發者的頭等大事。然而,我希望本書能讓你拋掉那種想法。你今天編寫的功能,極有可能在下一版本中被修改,但代碼的可讀性卻會對以后可能發生的修改行為產生深遠影響。原始代碼修改之后很久,其代碼風格和可讀性仍會影響到可維護性和擴展性。即便代碼已不復存在,你的風格和律條仍存活下來。

我有代碼潔癖,看不了沒有格式的代碼,看著有的項目中一個函數幾百行甚至更多,里面各種重復邏輯,if/else不知道嵌套了多少層,表面看是邏輯復雜,再轉念一想,為什么不用工廠、或者寫一些別的類來簡化下邏輯。這時肯定有人會站起來反對:“明明很簡單的邏輯,非得使用什么設計模式,搞得一團亂還看不懂。。” 如果只是一個if/else,或者邏輯比較簡單肯定沒必要,但是邏輯復雜的情況下光if/else也足夠將人搞暈,且當需求改變時代碼變得難以維護。

我之前一直覺得寫完代碼格式化是正常的,是基本操作,但是工作中發現好像不是一個基本操作,格式化并不涉及到專業能力,而是態度,連格式化都懶得做,你說你寫出的代碼經過了嚴格的測試。。。。想起之前上學時老師經常說的一句話:作業會不會是能力問題,而做不做就是態度問題了。

說這些并沒有什么惡意,僅是這本書的讀后感,讀完后就好像和作者已經是相識多年的老友,相視一笑。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712781.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712781.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712781.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MATLAB環境下腦電信號EEG的譜分析

腦電信號一直伴隨著人類的生命,腦電波是腦神經細胞發生新陳代謝、離子交換時細胞群興奮突觸電位總和,腦電信號的節律性則和丘腦相關,含有豐富的大腦活動信息。通常我們所接觸的腦電圖都是頭皮腦電圖,在有些特殊場合還需要皮下部位…

10.廣域網技術

1. PPP實驗點這里(拓撲代碼) 2. PPPoE配置實驗點這里(拓撲代碼) 目錄 一、廣域網二、PPP協議三、PPP鏈路建立過程1-LCP(鏈路協商)四、PPP鏈路建立過程2-PAP/CHAP(認證協商,可選&…

linux系統多個mysql時的部署和服務注冊

在一次實際部署過程中,碰到了服務器已經部署了一個mysql服務. 再部署新的mysql時,特別注意不能與另一個mysql互相影響.記錄一次部署中存在的問題和解決方法. 因為已存在mysql,新的mysql部署采用的是mysql.tar.gz解壓手動安裝,避免.rpm或者.deb等自動安裝方式覆蓋了已有mysql的配…

python語言1

一、pytho中的注釋 1.1注釋的理解 程序員在代碼中對代碼功能解釋說明的標注性文字可以提高代碼的可讀性注釋的內容將被python解釋器忽略,不被計算機執行 1.2注釋的分類 注釋分為:單行注釋、多行注釋、中文聲明注釋 (1)單行注…

LeetCode240題:搜索二維矩陣II(python3)

代碼思路: “根節點” 對應的是矩陣的 “左下角” 和 “右上角” 元素,以 matrix 中的左下角元素為標志數 flag ,則有: 若 flag > target ,則 target 一定在 flag 所在行的上方 ,即 flag 所在行可被消去&#xff0c…

kotlin安卓開發教程視頻,2024年Android開發陷入飽和

Android基礎 1、什么是ANR 如何避免它? 如果耗時操作需要讓用戶等待,那么可以在界面上顯示進度條。 2、View的繪制流程;自定義View如何考慮機型適配;自定義View的事件 3、分發機制;View和ViewGroup分別有哪些事件分…

Java協議解析:探索網絡編程的核心

引言 在當今數字化時代,網絡編程扮演著日益重要的角色,而Java協議則成為這個領域中不可或缺的一部分。隨著互聯網的普及和各種網絡應用的不斷涌現,對網絡通信的要求也變得越來越嚴格,這就需要對Java協議進行深入的理解和探索。本…

【知識管理】計算全局效率 Network global efficiency

這句話提到的“全局效率”(global efficiency)是網絡中信息傳遞效率的一個衡量指標,它是網絡中最短路徑長度的倒數的平均值。為了更好地理解這個概念,讓我們分解這個定義: 最短路徑長度(Shortest Path Len…

輸出數據庫全部表的外鍵引用拓撲結構

執行 sql: SELECTconstraint_name,table_name,column_name,referenced_table_name,referenced_column_name FROMinformation_schema.key_column_usage WHEREtable_schema ${databaseName} ANDreferenced_table_name IS NOT NULL 將執行結果復制到臨時文件中&#…

【Leetcode每日一刷】貪心算法|122.買賣股票的最佳時機 II、55. 跳躍游戲

一、122.買賣股票的最佳時機 II 力扣題目鏈接 🦄解題思路: 首先需要明確的幾個點: 當前只能有最大一支股票每一天操作只能3選1:買or賣or休息 此外,對于貪心,總有像下面圖示的一種直覺:如果…

力扣SQL50 產品銷售分析 I 查詢

Problem: 1068. 產品銷售分析 I 思路 left join on:左連接 Code select p.product_name, s.year, s.price from Sales s left join Product p on s.product_id p.product_id

靠譜的車【華為OD機試-JAVAPythonC++JS】

題目描述 程序員小明打了一輛出租車去上班。出于職業敏感,他注意到這輛出租車的計費表有點問題,總是偏大。 出租車司機解釋說他不喜歡數字4,所以改裝了計費表,任何數字位置遇到數字4就直接跳過,其余功能都正常。 比如&…

Scaffold 腳手架

Scaffold 腳手架 Scaffold 腳手架組件是一個核心組件,它為開發者提供了一個標準的、可定制的應用界面框架。androidx.compose.material3.Scaffold 包含了應用界面的基礎元素,如狀態欄、導航欄、頂部應用欄(TopAppBar)等。通過 Sc…

Windows的Docker-Desktop安裝與問題總結

目錄 Docker-Desktop安裝步驟 環境配置 Docker-Desktop安裝問題總結 問題1:docker-desktop setting界面一直加載轉圈 問題2:docker鏡像的存儲位置變更(防止C盤空間不足) 參考文獻: Docker-Desktop安裝步驟 環境…

又挖到寶了!國人團隊研發的AI視頻工具PixVerse,這么好用居然還完全免費!(強烈推薦)

昨天發了一款國產免費的 AI 繪畫工具 Dreamina 的介紹: 居然才發現!字節跳動旗下國產AI繪畫工具Dreamina,這么好用居然還免費!(強烈推薦) 發現大家對國產 AI 工具還挺感興趣的。今天繼續幫大家挖國產的 A…

【Leetcode每日一題】二分查找 - 山脈數組的峰頂索引(難度??)(23)

1. 題目解析 Leetcode鏈接:852. 山脈數組的峰頂索引 這個問題的理解其實相當簡單,只需看一下示例,基本就能明白其含義了。 核心在于找到題目中所說的峰值所在的下標并返回他們的下標即可。 2. 算法原理 峰頂及兩側數據特點分析 峰頂數據…

運算放大電路常用接法

1、反相比例運算電路 2、同相比例運算電路 3、電壓跟隨器 4、反相求和運算電路 5、同相求和運算電路 6、加減運算電路 7、加減電路 8、積分運算電路 9、實用積分電路 10、微分運算電路 11、實用微分電路 12、壓控電壓源二階低通濾波器 13、壓控電壓源二階高通濾波器 14、RC橋式…

[剪藏] - 尊湃通訊公司竊密曝光,發現繞不過華為

在科技領域風起云涌的今天,一場驚心動魄的竊密事件悄然發生,涉及華為WIFI6芯片技術的商業秘密被竊取,案中主謀竟然是一位曾在華為海思擁有重量級地位的技術大佬。本文將深入挖掘這起事件的來龍去脈,探討竊密者的背叛和華為的技術守…

CDGA數據治理工程師模擬試題(文末附鏈接)

單選題,每題僅有一個正確的選項。(本題型共有100道,總計100分) 1、關于元數據管理原則說法正確的是 A.確保員工了解如何訪問和使用元數據。 B.制定、實施和審核元數據標準,以簡化元數據的集成和使用。 C.創建反饋機制,以便數據…

公鑰密碼體制

公鑰密碼體制 一個系統中,n個用戶之間要進行保密通信,為了確保安全性,兩兩用戶之間的密鑰不能一樣。這種方式下,需要系統提供C2 n=n(n-1)/2把共享密鑰。這樣密鑰的數量就大幅增加了,隨之而來的產生、存儲、分配、管理密鑰的成本也大幅增加。而使用公鑰密碼體制可以大大減…