代碼整潔是指什么?代碼縮進整齊,沒有多余的注釋,這些是基本要求。本書像之前學過的教材一樣,介紹了多位編程領域的科學家對“代碼整潔”的理解,比如C++之父。我并不能準確復述出書上的觀點和觀點的作者,僅憑殘存的記憶,能復述多少就寫多少。下面是書中介紹的什么是整潔的代碼。
一個單元的代碼,只做一件事。單元,是指一個函數或方法。
代碼的意圖要直接了當。寫代碼的程序員,甚至其他程序員,要能很容易看出代碼要做什么。如果代碼很難看懂,那么它就是不整潔的代碼。今天在工作中,看到我寫的一個功能的代碼,耗時2個多小時,仍未明白我當初的意圖,更別談修改它了,十分痛苦!
代碼要附帶有測試它的測試代碼。一批代碼,若沒有提供測試代碼,檢測其是否正確,這樣的代碼,是不干凈的。
整潔的代碼,是不需要改動的代碼。添加一句,多余;減少一句,缺少;現有狀態,剛剛好。
寫整潔的代碼,可能需要耗費更多的時間,為什么要寫整潔的代碼?因為整潔的代碼,對程序員有許多好處。
開發經驗尚少的我,必須認識到,軟件開發行業,大部分的時間和工作,是維護已有的代碼,對舊代碼做些修補工作,完全從零開始寫新代碼的機會,比較少。維護代碼,必須先讀舊代碼。舊代碼難以讀懂,將直接拖慢程序員的工作,甚至會導致程序員加班。
該書作者具有豐富的從業經驗,他舉出了幾個讓我震驚的例子。曾經有一個很受歡迎的產品,不少人認為這個產品前景十分美好。出人意料的是,開發這個產品的公司,最終倒閉了。據該公司的員工說,當初為了趕產品進度,代碼質量很差,后來,代碼越寫越多,越來越難維護,每次新加功能,都異常艱難,不能及時推出新功能,最終導致公司倒閉。
什么樣的代碼,才是整潔的代碼?書本向我們展示了多位編程專家的觀點,作為讀者,應該怎么理解?作者已經預料到了讀者的困惑,分享了他的看法。以武術流派為例,世界上有空手道、柔道、截拳道等多種武術,每種武術都有許多學習者。一個門派的弟子,是否應該鄙視其他門派呢?千萬不可如此。每種流派,有優點,也有缺點。作為一個學習者,師從一個老師,掌握了一個流派的技能之后,可以再學習其他流派的武術。回到代碼整潔這個問題上來,對于不同專家的觀點,讀者不應該有“非此即彼,非黑即白”態度,而應該認識到每種觀點,都有其特定場景下的正確性(這好像是一句正確的廢話)。除武術和代碼整潔之外,對于許多其他領域的不同觀點,都可以用這種方法去看待。
這篇文章,是一篇復述性的讀書筆記,內容很不準確。我可以通過摘抄書本,寫得很準確。可是這樣做有什么意義呢?技術類的書籍,看過之后,吸收了多少(記住了多少),比摘抄了多少,要重要得多,特別是在看過書之后不再回頭看的情況下。