The principles of programming part.2

37fb520ca1e97d2970fc5812b13ce85d?s=47 Naoki
August 24, 2017

The principles of programming part.2

37fb520ca1e97d2970fc5812b13ce85d?s=128

Naoki

August 24, 2017
Tweet

Transcript

  1. 3.

    今日のお話 • 第1章 前提 ~ プログラミングの変わらぬ真実 ~ • 第2章 原則

    ~ プログラミングのガイドライン ~ • 第3章 思想 ~ プログラミングのイデオロギー ~ • 第4章 視点 ~ プログラマの観る角度 ~ • 第5章 習慣 ~ プログラマのルーティーン ~ • 第6章 手法 ~ プログラマの道具箱 ~ • 第7章 法則 ~ プログラミングのアンチパターン ~
  2. 11.
  3. 14.

    コードの臭い • コピペコードが散見している • 関数などの処理がとにかく長い • 機能の役割が多すぎる • 変数などの命名がずさん これらを見つけて改善を図る

    • コピペがあればひとつの機能にまとめる • 関数が長ければ、関連性の強い処理を別の関数にまとめる • 命名がずさんならば、適切に改名する • これらの改善作業を「リファクタリング」と呼ぶ
  4. 17.

    4章のまとめ • モジュール強度 関連性の高い処理をまとめて強くする • モジュール結合度 外部依存を小さくして弱くする • 直交性 他のモジュールの関数などを参照していても、その他のモジュールを修正しても影響が出ないようにする

    • 可逆性 仕様は変わることを想定して、変更を容易にすること • コードの臭い コピペだらけ、関数が長い、変数名が直感的じゃないものを見つけたらリファクタリングする • 技術的負債 負債は早期に返済する
  5. 36.

    コンテキスト コンテキストが「食べ物」の場合 • おれつむ • りきとや • かおぴた • あかげら

    • てからす きっと「食べ物」から連想する言葉を簡単に引き出せたはず
  6. 37.

    6章のまとめ • 曳光弾 関連性の高い処理をまとめて強くする • 契約による設計 関数を呼び出す側は正しい値を渡し、呼び出され側は正しい値を返すこと • 防御的プログラミング 「かもしれない」と考えながらプログラミングすること

    • ドッグフーディング ユーザー目線でプログラムを動作させてみること • ラバーダッキング 問題箇所を「誰か」に話しながら解決を模索すること • コンテキスト なぜそのコードが必要かの背景や状況を伝えること