Upgrade to Pro — share decks privately, control downloads, hide ads and more …

はじめてのIT勉強会 プリンシプルオブプログラミングPart.3

unisuke
September 21, 2021
120

はじめてのIT勉強会 プリンシプルオブプログラミングPart.3

unisuke

September 21, 2021
Tweet

Transcript

  1. 「よいコード」にならない • 書いたコードがリリースされると頻繁に障害が発生する • 書いたコードがリリースされると動作が遅い、すぐに落ちるなどのクレームがくる • 書いたコードを見てもらうとわかりにくい、シンプルでない、美しくないと指摘を うける • 書いたコードを見返した時読みにくいと感じる

    • 書いたコードを修正すると途端に動かなくなる • 書いたコードを修正すると予想外の箇所に影響が出る • 書いたコードに機能を追加しようとしてもうまくいかない • 書いたコードに仕様変更が入るとその部分全てが書き直しになる
  2. プログラミングセオリー プログラミングを導く価値観 プログラミングの最大の関心ごとは「最高のコードを作り上げること」 最高のコード : 拡張方法が多く存在し、余分な要素が存在せず、読みやすく理解しやすいコード • コミュニケーション • シンプル

    • 柔軟性 価値観を技術の選択基準に プログラミングにおける問題解決に用いる技術の選択には適応理由「なんでこんなことしなくちゃい けないの?」が必要→「価値」が個別の技術の選択理由になる What 最高のコードの実現のために「セオリー」を支える3つの価値 Why
  3. プログラミングセオリーを支える3つの価値 - コードは「文書」であるので 本質は「コミュニケーション ツール」 - コミュニケーションが良好で あるとはコードを読んだ人が コードの理解・修正・使用がで きること

    - 良好なコミュニケーションの ために読む人のことを考えるべ き コミュニケーション - コードの変更の容易さのこと - 保守作業を円滑に進めるのに 役立つ - 拡張しやすく拡張が他に波及 しないような設計を目指すべき - 柔軟性を言い訳にした複雑な コード/設計は許容できない。 余計な柔軟性は結局使われず複 雑さを増すコードになる可能性 が高い 柔軟性 - コードがシンプルであるとは 「余分な複雑性」が取り除かれ た状態 - 「余分な複雑性」の除去は コードの理解を容易にし、障害 の入り込む確率も下げる。良好 なコミュニケーションにも繋が ることが多い - シンプルにしすぎてコミュニ ケーションが損なわれる場合に はコミュニケーションを優先 シンプル
  4. プログラミングセオリーを実現する6つの原則 変更の影響が局所に留まるよう にコードを構成する →関係性の高いコードを集約し てモジュール化する 結果の局所化 ロジックと操作されるデータは 同じ関数やモジュールに ロジックとデータの一体化 重複ロジックの排除

    →コードの分割/関数化 繰り返しの最小化 同質なものはコードのどの場所 でも同じ振る舞いをする 対称性 修正タイミングが近いものは まとめる 更新頻度 データフローをなくし シンプルに表現する 宣言型の表現
  5. よいコードの基礎原理 よいソフトウェア・アーキテクチャ構築のための基礎原理 • コミュニケーション • シンプル • 柔軟性 アーキテクチャ根底技法 •

    抽象 • カプセル化 • 情報隠蔽 • パッケージ化 • 関心の分離 • 充足性、完全性、プリミティブ性 • ポリシーと実装の分離 • インターフェイスと実装の分離 • 参照の一点性 • 分割統治 What 10の根底技法