プリンシプルオブプログラミング
https://www.shuwasystem.co.jp//images/book/425175.jpg
書籍 上田勲
2016年 プリンシプルオブプログラミング 3年目までに身につけたい 一生役立つ101の原理原則 - 秀和システム
プリンシプル
前提
プログラミングに銀の弾丸はない
コードは設計書である
コードは必ず変更される
原則
KISSの原則
DRYの原則
YAGNIの原則
PIEの原則
SLAPの原則
OCPの原則
名前重要
思想
プログラミングセオリー
コミュニケーション
シンプル
柔軟性
結果の局所化
繰り返しの最小化
ロジックとデータの一体化
対称性
宣言型の表現
変更頻度
アーキテクチャ根底技法
抽象
カプセル化
情報隠蔽
パッケージ化
関心の分離
充足性、完全性、プリミティブ性
ポリシーと実装の分離
インタフェースと実装の分離
参照の一点性
分割統治
アーキテクチャ非機能要件
変更容易性
相互運用性
効率性
信頼性
テスト容易性
再利用性
7つの設計原理
単純原理
同型原理
対称原理
階層原理
線形原理
明証原理
安全原理
UNIX思想
モジュール化の原則
明確性の原則
組み立て部品の原則
分離の原則
単純性の原則
倹約の原則
透明性の原則
安定性の原則
表現性の原則
驚き最小の原則
沈黙の原則
修復の原則
経済性の原則
生成の原則
最適化の原則
多様性の原則
拡張性の原則
UNIX哲学
小は美なり
1つ1仕事
即行プロトタイプ
効率性より移植性
データはテキスト
レバレッジ・ソフトウェア
シェルスクリプト活用
対話インタフェース回避
フィルタ化
視点
凝集度
結合度
直交性
可逆性
コードの臭い
技術的負債
習慣
プログラマの三大美徳
ボーイスカウトの規則
パフォーマンスチューニングの箴言
エゴレスプログラミング
1歩ずつ少しずつ
TMTOWTDI
手法
曳光弾
契約による設計
防御的プログラミング
ドッグフーディング
ラバーダッキング
コンテキスト
法則
ブルックスの法則
コンウェイの法則
割れた窓の法則
エントロピーの法則
80-10-10の法則
ジョシュアツリーの法則
セカンドシステム症候群
車輪の再発明
ヤクの毛刈り
素振り
No Silver Bullet in programming
/gosyujin-books/0013: プリンシプルオブプログラミング.pdf#64eb4e702c53d800001ff1e0
関連書籍
人月の神話
Code as design
関連書籍
アジャイルソフトウェア開発の奥義
Code will be changed
コードは書いている時間より読んでいる時間の方が多い
関連書籍
達人プログラマー
KISSの原則
似てるかも?
less is more
オッカムの剃刀
関連書籍
The art of UNIX Programming
Don't Repeat Yourself
やむを得ないDRYもある
反対の概念: WET
似てるかも?
One Fact in One Place
一つの場所には一つの事実
Once and Only Once
たった一度だけ
レガシーコード
関連書籍
達人プログラマー
YAGNIの原則
関連書籍
プロダクティブ・プログラマ
PIEの原則
コードはWhatとHowの表現
Whyを表現するにはコメントしかない
関連書籍
アジャイルプラクティス
SLAPの原則
関連書籍
プロダクティブ・プログラマ
OCPの原則
code:mmd
flowchart LR
クライアント -- 使用 --> サーバー
code:mmd
flowchart LR
クライアント -- 使用 --> クライアントインターフェイス
サーバー -- 実装 --> クライアントインターフェイス
関連書籍
アジャイルソフトウェア開発の奥義
名前重要
関連書籍
まつもとゆきひろ コードの世界
/gosyujin-books/0031: プリンシプルオブプログラミング.pdf#64eb4e712c53d800001ff666
A theory of programming
Communication
Simplicity
Flexibility
Local consequences
Minimize repetition
Logic and Data together.
Symmetry
Declarative Expression
Rate of Change
Enabling Techniques for Architecture
Abstraction
Encapsulation
Information Hiding
Packaging
Separation of Concerns
Sufficiency, Completeness, Primitiveness
Separation of Policy and Implementation
Separation of Interface and Implementation
Single Point of Reference
Divide and Conquer
Non-functional requirement for Architecture
Changeability
Interoperability
Efficiency
Reliability
Testability
Reusability
Seven design principles
Simplicity Principle
Isomorphism Principle
Symmetry Principle
Hierarchy Principle
Linearity Principle
Clarity Principle
Safty Principle
UNIX Culture
Rule of Modularity
Rule of Clarity
Rule of Composition
Rule of Separation
Rule of Simplicity
Rule of Parsimony
Rule of Transparency
Rule of Robustness
Rule of Representation
Rule of Least Surprise
Rule of Silence
Rule of Repair
Rule of Economy
Rule of Generation
Rule of Optimization
Rule of Diversity
Rule of Extensibility
UNIX Philosophy
Small is beautiful
Make each program do one thing well
1つのプログラムには1つのことをうまくやらせる
Build a prototype as soon as possible
できるだけ早く試作を作成する
Choose portability over efficiency
Store numerical data in flat ASCII files
Use software leverage to your advantage
ソフトウェアの梃子を有効に活用する
Use shell scripts to increase leverage and portability
シェルスクリプトを使うことで梃子の効果と移植性を高める
Avoid captive user interfaces
過度の対話的インタフェースを避ける
Make every program a filter
/gosyujin-books/0088: プリンシプルオブプログラミング.pdf#64eb4e712c53d80000200255
モジュール強度
カップリング
Orthogonality
Reversibility
Bad smell in code
Technical debt
/gosyujin-books/0102: プリンシプルオブプログラミング.pdf#64eb4e6d2c53d800003b1fed
Three great virtues of a programmer
Boy Scout Rule
Proverb of performance tuning
Egoless programming
One by one
There's more than one way to do it
やり方は、1つではない
Tracer ammunition
Design by Contract
Defensive programming
Dogfooding
Rubber ducking
Context
Brooks' law
Conway's law
Broken Windows Theory
Law of entropy increase
80-10-10 rule
語感が似てるけど全然違う
80:20の法則
Joshua Tree Principle
名前がないものは見えない
Second system syndrome
Reinvented wheel
Reinventing the wheel
Yak Shaving