[Software Design Book](https://web.stanford.edu/~ouster/cgi-bin/book.php)
## Table of Contents
### Preface
- スタンフォード大学のCS190の授業がベース
### Ch1: Introduction (It's All About Complexity)
### Ch2: The Nature of Complexity
### Ch3: Working Code Isn't Enough (Strategic vs. Tactical Programming)
### Ch4: Modules Should Be Deep
### Ch5: Information Hiding (and Leakage)
### Ch6: General-Purpose Modules are Deeper
### Ch7: Different Layer, Different Abstraction
### Ch8: Pull Complexity Downwards
### Ch9: Better Together Or Better Apart
### Ch10: Define Errors Out Of Existence
### C11: Design it Twice
### Ch12: Why Write Comments? The Four Excuses
### Ch13: Comments Should Describe Things that Aren't Obvious from the Code
### Ch14: Choosing Names
### Ch15: Write The Comments First
### Ch16: Modifying Existing Code
### Ch17: Consistency
### Ch18: Code Should Be Obvious
### Ch19: Software Trends
### Ch20: Designing for Performance
## 感想ブログ
- [A Philosophy of Software Design: My Take (and a Book Review) - The Pragmatic Engineer](https://blog.pragmaticengineer.com/a-philosophy-of-software-design-review/)
- [A Philosophy of Software Design:要約 - Qiita](https://qiita.com/immrshc/items/73f9a9c5d7453273e371)
- [A Philosophy of Software Design を読んだ - blog.syfm](https://syfm.hatenablog.com/entry/2019/01/22/165339)
- [直感で性能改善をするな!](https://zenn.dev/ribilynn/articles/58f3169f75bdcc)
- [『A Philosophy of Software Design』:柴田 芳樹 (Yoshiki Shibata):SSブログ](https://yshibata.blog.ss-blog.jp/2019-03-12)