Code Complete 2nd 主要是講軟體工程方面的內容。通常簡寫為 cc2e
Task list: :smile:
本書分為幾個部分:
1~4 章
寫程式、蓋房子,本質上都是在建造一個東西。建築學中的概念也常常使用在軟體工程學中。 工程開始前,需要有的一些步驟:討論需求、建築藍圖、架構確認、資源管理、本地化、國際化, 使用者界面、效能、輸入輸出、容錯性。在真正動手前,考慮周到,之後才不會多走了錯路。 算是在 孫子兵法 中廟算的階段。
5 Design in Construction
軟體設計,在動手寫程式碼前,規劃軟體的架構,像是設計模式、使用者介面、資料庫存取、 耦合標準、高內聚力
6 Working Classes
Class 類別,很多物件導向的程式中常用到的。 抽象資料類別 ADTs,類別介面、為何要用 Class?,超越類別 Packages
7 High-Quality Routines
Routines(子程式):為了完成特別的功能而寫的方法, 可被呼叫。 程式中,一定有些動作會重複的做,把它分出來,需要時再呼叫,程式可以變的比較易讀,且有效率。 好的子程式名稱:描述子程式的功能,簡潔,對傳回值有所描述,動詞+受詞?命名要有一致性。 子程式要多長?200行以下會比較好。 如何使用子程式參數(傳入值)?
8 Defensive Programming
撰寫程式時,錯誤難免,但事前的一些規範,能有效的防止產出錯誤。 輸入資料檢查、斷言、錯誤處理、例外、隔離程式、輸助除錯的程式碼…
9 The Pseudocode Programming Process
#第三部分 變數
10 General Issues in Using Variables
變數型態、作用範圍、持續時間…
11 The Power of Variable Names
12 Fundamental Data Types
數值、整數、浮點數、字元字串、布林、列舉、具名常數、陣列
13 Unusual Data Types
struct
in C++, Structure
in Visual Basic ,
基本上是多種資料型態結合的自訂資料型態。#第四部分 語句
14 Organizing Straight-Line Code
[Straight-Line Code(直線碼)] (http://terms.naer.edu.tw/detail/1287109/) : 指程式中不含任何循環或迴圈者。若需要重複某程式段,則依順序直接寫出其程式碼,而不用循環指令。
15 Using Conditionals
if-else
, switch-case
,…
16 Controlling Loops
for loop
, while
,…
17 Unusual Control Structures
recursive structure, goto
clause, …
18 Table-Driven Methods
用查表,來代替 if-else
之類的設計模式。簡單的情境,或許 邏輯子句較方便。但是情境越複雜,查表法的好處也越大。
19 General Control Issues
布林運算、巢狀結構、結構化設計…
#第五部分 程式碼改善
程式寫作中、寫完後除錯,debug的過程
20 The Software-Quality Landscape
產品有要正確性(運作結果正常),可用性(易學易用),效率(運行速度可用),… 測試方法,Alpha, Beta 測試,…
21 Collaborative Construction
兩個程式設計師在一個電腦上共同工作。一個人輸入程式碼,而另一個人審查他輸入的每一行程式碼。
22 Developer Testing
Unit-Test, Component Test, Intergration Test,Regression Test, System Test,…
23 Debugging
除錯方式、方法,…
24 Refactoring
指對軟體程式碼做任何更動以增加可讀性或者簡化結構而不影響輸出結果。
程式不可能一寫出來就是最完美的,常要經過多次修改,追加功能,減少功能, 除錯…
25 Code-Tuning Strategies
Code-Tuning 程式碼調整,和重構不同的是,通常為了增加程式的效率而作。 改寫程式邏輯、用新的運算法,…。為了快,而重寫。
26 Code-Tuning Techniques
本章著重在程式碼範圍的調整,較細節的部分。
#第六部分 系統考慮
27 How Program Size Affects Construction
專案管理,團隊協調
28 Managing Construction
29 Integration
整合,不同專案間的整合,不同團隊間的整合,不同公司間的整合,
30 Programming Tools
#第七部分 軟體工藝
31 Layout and Style
Coding Style: 程式寫出來,要讓人看的懂。斷行、段落,註解…
**32 Self-Documenting Code **
**33 Personal Character **
性格影響結果
34 Themes in Software Craftsmanship
以人為本
35 Where to Find More Information
900多頁這樣大略翻了一下,說的東西還真的是很多。軟體工程真的是教你如何寫程式走向架構軟體、 建造一個新的東西的學問。細讀可能還要很多時間,有空再來慢慢讀。