這樣寫code好不好? 辨識、分析、改善, 寫出易讀易維護的程式碼

這樣寫code好不好? 辨識、分析、改善, 寫出易讀易維護的程式碼

良いコード/ 悪いコードで学ぶ設計入門: 保守しやすい, 成長し続けるコードの書き方

出版日期:
2024/10/06
79
630497
查詢門市庫存
資深軟體架構師的真實負面教材,帶你全面檢討寫code壞習慣

內容簡介


內容介紹:

  程式要寫得好,不只是執行結果正確就好。
這些情況是否似曾相識?

.過個週末就看不懂自己寫了什麼 code
.修好一邊的 bug,另一邊就出新 bug
.稍微調整功能,就必須地毯式檢查整個專案

【寫程式別再靠直覺和乖乖!】

只要建立優良的程式結構,就算交給其他人接手,
也可以快速地理解、維護、修改原始碼。
本書所傳授的,就是寫出「好程式」的「設計技巧」。

◆辨識
- 資深軟體架構師的職場實際負面案例,親眼見證業界 bad code
- 低內聚、密耦合、半熟物件、退化註解……認識壞結構就能一眼看破

◆分析
- 防衛不足、功能分散、職責不清……分析主要弊病,對症下藥
- YAGNI、Tell, Don't Ask、單一責任、最小驚訝……認識設計原則,檢討程式碼

◆改善
- 防衛子句、值物件、工廠類別、策略模式……各種技巧範例實際解決問題
- 學習地圖、職場心法無私分享,軟體設計不再是紙上談兵

程式人人都能寫,好程式卻是寥若晨星;
掌握軟體設計力,才能創造工程師的專業價值 & 不可取代性!

本書特色:

  ◆293 個精心準備的程式範例
以電商系統與電玩遊戲為例,挑選主流語言共通語法,逐步示範將粗劣程式碼縫補、修整的過程。

◆詳細列舉優質、劣質程式碼的特徵與影響
基於資深職業經驗,具體說明,在現實程式碼也能活用書中技巧。

◆觀念基礎扎實,說明清晰易懂
以多種比喻、聯想來說明,而非通篇艱澀道理,可與生活經驗融會貫通。

◆旁徵博引,融合歷來軟體經典概念
引述軟體設計各大經典書籍,一本集結知識精華,也是銜接經典的橋樑。

展開看更多

產品目錄

目錄:
序言

第 1 章 瞭解不良構造的後果
1.1 意義不明的命名
1.2 難以理解的巢狀條件判斷結構
1.3 容易召喚各式各樣惡魔的資料類別
1.4 驅魔的基本

第 2 章 設計的第一步
2.1 選擇清楚表達功能的名稱
2.2 不重複使用變數,要為不同功能準備不同變數
2.3 不寫流水帳,把功能區分為函式
2.4 將相關的資料和邏輯統整到類別中

第 3 章 類別設計 ―串接一切的設計基礎―
3.1 設計時應確保類別能獨立運作
3.2 讓類別獨當一面的設計技巧
3.3 檢驗驅魔的效果
3.4 解決程式結構問題的設計模式

第 4 章 活用不可變性質 ―建立穩定的結果―
4.1 重複賦值
4.2 可變狀態帶來的意外後果
4.3 不可變和可變的處理方針

第 5 章 低內聚 ―七零八落的物件―
5.1 靜態函式的誤用
5.2 初始化函式的分散
5.3 通用工具類別(Common、Util)
5.4 使用引數回傳結果
5.5 過多的引數
5.6 成員變數串

第 6 章 條件判斷 ―解開迷宮般的流程控制―
6.1 巢狀條件判斷造成可讀性降低
6.2 大量重覆的 switch
6.3 重複、巢狀條件判斷
6.4 不要以型別判斷作為條件判斷
6.5 熟練運用介面是邁向中級者的第一步
6.6 旗標引數

第 7 章 集合 ―化解巢狀結構的結構化技術―
7.1 重覆製作集合原有的函式
7.2 迴圈內的巢狀條件判斷
7.3 低內聚的集合操作

第 8 章 密耦合 ―緊密糾纏、難分難解的結構―
8.1 密耦合與職責
8.2 密耦合的案例和解決方案

第 9 章 危害設計健全性的各種惡魔
9.1 死碼(Dead Code)
9.2 YAGNI 原則
9.3 魔法數字(magic number)
9.4 字串型別執著
9.5 全域變數
9.6 null 問題
9.7 例外的擱置
9.8 破壞設計秩序的元程式設計
9.9 套件的技術包裝法(技術驅動包裝)
9.10 複製貼上的範例程式碼
9.11 銀彈

第 10 章 名稱設計 ―讓人可以看透程式結構的名稱―
10.1 召來惡魔的名稱
10.2 設計名稱―目標式名稱設計
10.3 需要保持警覺的名稱事項
10.4 用途不明的名稱
10.5 導致構造大幅歪曲的名稱
10.6 和函式的位置格格不入的名稱
10.7 過度縮寫的名稱

第 11 章 註解 ―讓程式更穩定、更易修改的文字―
11.1 退化註解
11.2 用註解掩飾不良的命名
11.3 註解應標示用途及更改規格的注意事項
11.4 註解原則總結
11.5 註解文件

第 12 章 函式 ―優秀的類別必有優秀的函式―
12.1 使用同一類別的成員變數
12.2 以不可變為基礎以防止意外行為
12.3 只下令、不詢問
12.4 CQS(命令查詢分離)
12.5 引數
12.6 回傳值

第 13 章 建模 ―類別設計的基石―
13.1 容易陷入邪惡結構的 User 類別
13.2 模型的思考方式和理想的結構
13.3 不良模型的問題和解決方法
13.4 影響功能性的建模

第 14 章 重構 ―讓舊有程式碼脫胎換骨的技術―
14.1 重構的流程
14.2 以單元測試防止重構失誤
14.3 規格不明確時的分析方法
14.4 IDE 的重構功能
14.5 重構的注意事項

第 15 章 設計的意義與設計師的態度
15.1 本書所談論的設計問題
15.2 缺乏設計將導致開發效率下降
15.3 軟體與工程師的成長性
15.4 解決設計不良的問題
15.5 判斷程式碼好壞的軟體度量
15.6 程式碼的分析工具
15.7 設計目標與性價比
15.8 成為掌握時間的超能力者

第 16 章 克服職場的阻礙、實踐設計觀念與技術
16.1 溝通
16.2 設計
16.3 實作
16.4 審查
16.5 提升團隊的設計能力

第 17 章 軟體設計之旅的下一站
17.1 更進階的軟體設計書籍
17.2 提升設計技能的學習之路

作者介紹

仙塲大也
出身於青森縣。曾任職知名電機製造商,目前在 READYFOR 擔任軟體架構師,致力於推廣重構與軟體設計。
在與劣質程式碼戰鬥的過程中發現了軟體設計的魅力。有空的時候就會在腦中重構程式碼。
曾獲 IT 工程書大賞 2023 技術書部門大賞、Developers Summit 2023 話題賞第 1 名、最佳講者賞第 3 名,多次受邀演講。
Twitter(現 X):ミノ駆動(@MinoDriven)

規格

誠品貨碼 / 2682648670005
ISBN13 / 9789863128083
ISBN10 /
EAN貨碼 / 9789863128083
頁數 / 416
注音版 / 否
裝訂 / P:平裝
語言 / 1:中文/繁體
尺寸 / 23X17X2.5CM
級別 / N:無
重量(g) / 914
提供維修 / 無

退貨說明

退貨須知:

  1. 依照消費者保護法的規定,您享有商品貨到次日起七天猶豫期(含例假日)的權益(請注意!猶豫期非試用期),辦理退貨之商品必須是全新狀態(不得有刮傷、破損、受潮)且需完整(包含全部商品、配件、原廠內外包裝、贈品及所有附隨文件或資料的完整性等)。
  2. 請您以送貨廠商使用之包裝紙箱將退貨商品包裝妥當,若原紙箱已遺失,請另使用其他紙箱包覆於商品原廠包裝之外,切勿直接於原廠包裝上黏貼紙張或書寫文字。若原廠包裝損毀將可能被認定為已逾越檢查商品之必要程度,本公司得依毀損程度扣除回復原狀必要費用(整新費)後退費;請您先確認商品正確、外觀可接受,再行拆封,以免影響您的權利;若為產品瑕疵,本公司接受退貨。

依「通訊交易解除權合理例外情事適用準則」,下列商品不適用七日猶豫期,除產品本身有瑕疵外,不接受退貨:

  1. 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮蔬果、乳製品、冷凍冷藏食材、蛋糕)
  2. 依消費者要求所為之客製化給付。(如:客製印章、鋼筆刻字)
  3. 報紙、期刊或雜誌。
  4. 經消費者拆封之影音商品或電腦軟體。
  5. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書)
  6. 已拆封之個人衛生用品。(如:內衣褲、襪類、褲襪、刮鬍刀、除毛刀等貼身用品)
  7. 國際航空客運服務。

若您退貨時有下列情形,可能被認定已逾越檢查商品之必要程度而須負擔為回復原狀必要費用(整新費),或影響您的退貨權利,請您在拆封前決定是否要退貨:

  1. 以數位或電磁紀錄形式儲存或著作權相關之商品(包含但不限於CD、VCD、DVD、電腦軟體等) 包裝已拆封者(除運送用之包裝以外)。
  2. 耗材(包含但不限於墨水匣、碳粉匣、紙張、筆類墨水、清潔劑補充包等)之商品包裝已拆封者(除運送用之包裝以外)。
  3. 衣飾鞋類/寢具/織品(包含但不限於衣褲、鞋子、襪子、泳裝、床單、被套、填充玩具)或之商品缺件(含購買商品、附件、內外包裝、贈品等)或經剪標或下水或商品有不可回復之髒污或磨損痕跡。
  4. 食品、美容/保養用品、內衣褲等消耗性或個人衛生用品、商品銷售頁面上特別載明之商品已拆封者(除運送用之包裝外一切包裝、包括但不限於瓶蓋、封口、封膜等接觸商品內容之包裝部分)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  5. 家電、3C、畫作、電子閱讀器等商品,除商品本身有瑕疵外,退回之商品已拆封(除運送用之包裝外一切包裝、包括但不限於封膜等接觸商品內容之包裝部分、移除封條、拆除吊牌、拆除貼膠或標籤等情形)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  6. 退貨程序請參閱【客服專區→常見問題→誠品線上退貨退款】之說明。
付款/配送