- SOLID原則(SRP, OCP, LSP, ISP, DIP)
- SRP(Single responsibility,單一職責)
- 定義:一個class應該只有一個需要改變的原因。There should never be more than one reason for a class to change.
- 白話:一個class只作一件事。
- OCP(Open-closed,開放封閉)
- 定義:軟體設計,應該對擴充開放,對修改封閉。Software entities like classes, modules and functions should be open for extension but closed for modifications.
- 白話:軟體要很容易擴充功能,且擴充時原有的code都不需修改。
- LSP(Liskov substitution,Liskov替換)
- 定義:子類必須能夠替換其父類別。Inheritance should ensure that any property proved about supertype objects also holds for subtype objects.
- 白話:設計父類別時,只把所有的子類都有的東西放進來。
- ISP(Interface segregation,介面隔離)
- 定義:客戶(Client)只要依賴它們所需的介面Clients should not be forced to depend upon interfaces that they don't use.
- 白話:設計介面也盡量簡單,別把不相關的東西放進來。
- DIP(Dependency inversion,依賴倒轉)
- 定義:
- 高階模組不應依賴低階模組,兩者應依賴抽象概念。High-level modules should not depend on low-level modules. Both should depend on abstractions.
- 抽象概念不應依賴細節,細節應依賴抽象概念。Abstractions should not depend on details. Details should depend on abstractions.
- 白話:不要具體的指明物件的關係,而要抽象觀念替代之。
2016/1/11
程式設計常見的幾個原則整理
[心得]30天快速上手TDD讀後心得
看完了《30快速上手TDD》,整理一些我認為蠻重要的心得跟大家分享。
1.
ATDD(USER STORY)
<->BDD(DSL TO Programming Language)
<->TDD(include integration test, unit test and refactor)
白話來說,就是用戶使用ATDD來寫好USER STORY後,用BDD轉成程式設計師看得懂的規格後,再讓程式設計師用TDD的方式開發測試
Ref:
[30天快速上手TDD][Day 26]User Story/ATDD/BDD/TDD - 總結
2.
職責分離==>
找出誰,在做什麼事!
要找出「誰,做什麼事」,有一個相當相當簡單的技巧,相信大家一學就會。針對前面透過人話所整理出來的 function ,只要找出該 function 代表的意義中的「主詞」、「動詞」、「受詞」即可。
什麼意思?很簡單:
主詞:代表類別;
動詞:代表方法;
受詞:通常是方法參數;
形容詞:通常是呼叫物件行為後,物件產生的狀態變化。
EX1-CalculatedByBlackCat():黑貓,計算運費
Ref:
[30天快速上手TDD][Day 12]Refactoring - 職責分離
3.
介面導向==>
『用該物件的角度去看世界,除了物件自己本身以外,看出去外面的世界,都是介面。』
Ref:
[30天快速上手TDD][Day 16]Refactoring - 介面導向
1.
ATDD(USER STORY)
<->BDD(DSL TO Programming Language)
<->TDD(include integration test, unit test and refactor)
白話來說,就是用戶使用ATDD來寫好USER STORY後,用BDD轉成程式設計師看得懂的規格後,再讓程式設計師用TDD的方式開發測試
Ref:
[30天快速上手TDD][Day 26]User Story/ATDD/BDD/TDD - 總結
2.
職責分離==>
找出誰,在做什麼事!
要找出「誰,做什麼事」,有一個相當相當簡單的技巧,相信大家一學就會。針對前面透過人話所整理出來的 function ,只要找出該 function 代表的意義中的「主詞」、「動詞」、「受詞」即可。
什麼意思?很簡單:
主詞:代表類別;
動詞:代表方法;
受詞:通常是方法參數;
形容詞:通常是呼叫物件行為後,物件產生的狀態變化。
EX1-CalculatedByBlackCat():黑貓,計算運費
Ref:
[30天快速上手TDD][Day 12]Refactoring - 職責分離
3.
介面導向==>
『用該物件的角度去看世界,除了物件自己本身以外,看出去外面的世界,都是介面。』
Ref:
[30天快速上手TDD][Day 16]Refactoring - 介面導向
標籤:
心得,
ATDD,
BDD,
Refactoring,
TDD
訂閱:
文章 (Atom)