Open2

可読性の高いコード

bz0bz0
  • 変数名、クラス名、メソッド名
    • 良い変数名は「必要な情報が含まれている」
      • 長くなっても必要な情報は必ずいれる
      • 配列やコレクションは複数形
      • ケースはそれぞれの言語の流儀に従う
        • キャメルケース:各単語の頭文字を大文字
        • スネークケース:単語間をアンダースコアでつなげる
      • パターンによって接頭字をつける
        • boolean型
          • is ... 状態を表す(isActiveとか)
          • has ... 所有を表す(hasFileとか)
          • can ... 可能を表す(canGetとか)
          • should ... すべきかどうか(shouldChangeとか)
    • 「変数名がこれでいいか分からない」の具体的な対策
      • codicで日本語→英語に変換
        • 類似語で色々試す
      • githubでその変数名がどのような使われ方をしているのか検索し、イメージと合っているかチェックする
    • https://nelog.jp/programming-words#関数名によく使われる英単語(動詞)の意味とニュアンス
    • https://qiita.com/gazayas/items/3d352d1b6ec9a225c6f6#_reference-4e41a8529f5cedd6a7ac
    • メソッド名:オブジェクトに命令するので動詞から始める
    • クラス名:基本的には名詞
    • 全体として下記のような形にしたい
      • 主語 = クラス
      • 動詞 = メソッド
      • 目的語 = 引数
      • (クラス)が(引数)を(動詞)するという文章になるか
  • 対となる関数があるなら、否定の意味を持つ接頭辞
bz0bz0
  • 構造
    • デザインパターン(GoF)
      • ストラテジー
        • 内容:インタフェースで縛りバリエーションごとにオブジェクトを切り替える
      • リポジトリ
      • テンプレートメソッド
        • 内容:継承を使い親で子の共通処理を行う
        • メリット:親クラスのメソッドを引き継ぐことで再利用しやすくなる
        • デメリット:
          • 複数の子クラスで継承すると親クラスを修正するとき影響範囲が見えづらくなる
          • 子の仕様に合わせる為に親クラスに条件分岐や引数増加が起きやすく親と子が密結合になりやすい
    • DI
    • テストが書きやすい設計とは
    • アーキテクチャ
      • レイヤードアーキテクチャ
        • メリット
        • デメリット
      • ヘキサゴナルアーキテクチャ
        • メリット
        • デメリット
      • クリーンアーキテクチャ
        • メリット
        • デメリット