《代碼大全2》讀書筆記2
《代碼大全2》第四章聚焦“關(guān)鍵的構(gòu)建決策”,核心是讓開(kāi)發(fā)者明白,構(gòu)建階段的前期選擇比后期修改更重要,這些決策直接影響代碼的后續(xù)維護(hù)成本。首先是語(yǔ)言選擇,書中明確“無(wú)最優(yōu)語(yǔ)言,只有最適配場(chǎng)景”,比如對(duì)性能要求極高的游戲引擎適合用C++,前端交互邏輯適合用JavaScript,快速迭代的工具類項(xiàng)目適合用Python,選擇的核心是匹配項(xiàng)目需求與團(tuán)隊(duì)能力,而非盲目追逐新技術(shù)。其次是編程約定,強(qiáng)調(diào)團(tuán)隊(duì)需提前統(tǒng)一規(guī)范,包括變量命名(如駝峰式userName、常量全大寫MAX_COUNT)、代碼格式(縮進(jìn)空格數(shù)、換行規(guī)則)、注釋風(fēng)格,避免“每人一套編碼習(xí)慣”導(dǎo)致的閱讀障礙,讓代碼成為“團(tuán)隊(duì)共同語(yǔ)言”。最后是工具選擇,提出“善用工具解放人力”,比如用Git做版本控制解決代碼沖突,用ESLint、Pylint做代碼檢查統(tǒng)一格式,用Maven、Gradle做構(gòu)建工具自動(dòng)化依賴管理,這些工具能將重復(fù)工作自動(dòng)化,減少人工失誤,提升團(tuán)隊(duì)協(xié)作效率。
第五章深入“軟件設(shè)計(jì)基礎(chǔ)”,打破“設(shè)計(jì)是架構(gòu)師專屬工作”的誤區(qū),強(qiáng)調(diào)每個(gè)開(kāi)發(fā)者都需要具備設(shè)計(jì)思維,因?yàn)樵O(shè)計(jì)是構(gòu)建的“藍(lán)圖”,直接決定代碼的結(jié)構(gòu)合理性。本章首先明確好設(shè)計(jì)的核心原則:?jiǎn)我宦氊?zé)原則要求一個(gè)函數(shù)或類只做一件事,比如“計(jì)算訂單金額”的函數(shù)不應(yīng)同時(shí)處理“打印訂單”的邏輯,避免功能耦合導(dǎo)致修改困難;最小意外原則要求代碼行為符合開(kāi)發(fā)者直覺(jué),比如函數(shù)名getUser()就應(yīng)只返回用戶信息,而非偷偷修改用戶數(shù)據(jù),減少他人閱讀和使用時(shí)的理解成本。同時(shí),本章也點(diǎn)出設(shè)計(jì)的常見(jiàn)誤區(qū):過(guò)度設(shè)計(jì)是為“可能的需求”添加復(fù)雜邏輯,導(dǎo)致代碼冗余;無(wú)設(shè)計(jì)則是直接堆砌代碼,缺乏結(jié)構(gòu),兩者都會(huì)讓后期維護(hù)變得艱難,平衡“當(dāng)下需求”與“未來(lái)擴(kuò)展”是設(shè)計(jì)的關(guān)鍵。
第六章將視角從“個(gè)人設(shè)計(jì)”擴(kuò)展到“工作組的工作設(shè)計(jì)”,核心是解決“團(tuán)隊(duì)如何統(tǒng)一設(shè)計(jì)思路,避免各自為戰(zhàn)”的問(wèn)題。首先是設(shè)計(jì)評(píng)審(Design Review),書中強(qiáng)調(diào)這是團(tuán)隊(duì)協(xié)作的關(guān)鍵動(dòng)作——通過(guò)會(huì)議讓開(kāi)發(fā)、測(cè)試、產(chǎn)品等不同角色同步設(shè)計(jì)方案,提出意見(jiàn),比如測(cè)試人員可能會(huì)指出設(shè)計(jì)中難以覆蓋的測(cè)試場(chǎng)景,產(chǎn)品人員能確認(rèn)設(shè)計(jì)是否符合需求,避免“個(gè)人設(shè)計(jì)盲區(qū)”導(dǎo)致后期返工。其次是接口約定先行,要求團(tuán)隊(duì)提前定義模塊間的接口規(guī)則,包括API參數(shù)、返回格式、錯(cuò)誤碼定義等,并形成文檔,比如“用戶模塊”向“訂單模塊”傳遞用戶信息的接口,需明確字段含義與類型,防止開(kāi)發(fā)中因接口理解不一致導(dǎo)致模塊無(wú)法銜接。最后是復(fù)用現(xiàn)有設(shè)計(jì),書中提倡優(yōu)先復(fù)用團(tuán)隊(duì)已有的成熟模塊,比如通用的“權(quán)限校驗(yàn)”“日志記錄”模塊,而非重復(fù)造輪子,既能提升開(kāi)發(fā)效率,也能保證代碼質(zhì)量的一致性,減少新模塊引入的潛在風(fēng)險(xiǎn)。

浙公網(wǎng)安備 33010602011771號(hào)