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

大切な名前[Intro]公開版

 大切な名前[Intro]公開版

第一回のタガヤスで説明した
プログラムにおいて「名前」は大切だよね。というお話の前振りです

Infiniteloop

October 17, 2023
Tweet

More Decks by Infiniteloop

Other Decks in Programming

Transcript

  1. 1. 自己紹介 名前 : 中野 明 現在 所属 : インフィニットループ仙台支社

    (1 年 ) 業務 : スマホゲーのサーバ開発 (PHP) 過去 業務 : ゲーム開発 (10 年 ) コンシューマ・スマホ・ガラケー 趣味 お菓子づくり、レザークラフト 最近ボビンレース始めました
  2. 3. ダメコードとは コードの使われ方 • 新規 (write) ----- 以下の作業が多数 ----- •

    修正 (read, write) • 追加 (read, write) • 削除 (read, delete) • レビュー (read)
  3. 3. ダメコードとは つまり • 読むことの方が多い • が、書いた時に読まれることを意識していない ➔ アウトプットを作り上げている ➔

    書いている間は良いコード • 読まれた瞬間にダメコードが発生する 「読まれなければどうということは無い!!」
  4. 3. ダメコードとは つまり • 読むことの方が多い • が、書いた時に読まれることを意識していない ➔ アウトプットを作り上げている ➔

    書いている間は良いコード • 読まれた瞬間にダメコードが発生する 「読まれなければどうということは無い!!」 必ず読まれます。
  5. 4. コードを読む コードを読むとは ? • 処理単位での意味の理解 • 問題になりそうな箇所を把握する ➔ (I/O,

    DB, GPU, マルチスレッド ) • 自分の処理をどこに置くか 行動のためのヒントを探す
  6. 4. コードを読む どうやってヒントを読み取るか • 名前 ➔ 名前から処理を想像する • クラス構造 ➔

    クラスのつくりから責務を想像する • コードブロック ➔ コードのまとまりから流れを想像する
  7. 4. コードを読む どうやってヒントを読み取るか • 名前 ➔ 名前から処理を想像する • クラス構造 ➔

    クラスのつくりから責務を想像する • コードブロック ➔ コードのまとまりから流れを想像する いろいろある!
  8. 5. 命名 要は見やすければいいんでしょ • 単純な名前つけてるよ ➔ 意味を持たない Get/Service/Manager が氾濫してません? •

    bool を返すメソッドは Is でいいんでしょ ➔ そのメソッドはもっと大きなことしてません ? •やっていることは全部書いているよ ➔ 説明過多になっていません?
  9. 5. 命名 要は見やすければいいんでしょ • 単純な名前だけで構成されている Get だけで意図を表現できる? function version() {

    $database = DataBase::get(); $handler = $database->getHandler('environment'); $entity = $handler->getEntity(); return $entity->getVersion(); }
  10. 5. 命名 要は見やすければいいんでしょ • 単純な名前だけで構成されている Get だけで意図を表現できる? function version() {

    $database = DataBase::instance(); $handler = $database->createHandler('environment'); $entity = $handler->fetchEntity(); return $entity->getVersion(); }
  11. 5. 命名 要は見やすければいいんでしょ • 名前以上のことをやっている bool うんぬんより検証作業の意味合いが強い class Entity {

    private $id; public function isEnable() { return STATUS_OK === DataBase::instance() ->createHandler('entity') ->fetch($this->id) ->status(); } }
  12. 5. 命名 要は見やすければいいんでしょ • 名前以上のことをやっている bool うんぬんより検証作業の意味合いが強い class Entity {

    private $id; public function validate() { return STATUS_OK === DataBase::instance() ->createHandler('entity') ->fetch($this->id) ->status(); } }
  13. 5. 命名 要は見やすければいいんでしょ • やたらと説明的 ( 引数被り / 冗長 )

    引数で説明できません? function createBurgerFromBreadAndCheese( Bread $bread, Cheese $cheese ){ /* 処理いろいろ */ }
  14. 5. 命名 要は見やすければいいんでしょ • やたらと説明的 ( 引数被り / 冗長 )

    引数で説明できません? function createBurger( Bread $bread, Cheese $cheese ){ /* 処理いろいろ */ }
  15. 5. 命名 いろいろな意見 • 名前考えるのだるくて ➔ 変な名前だと読む方はもっとだるいので • パッと見のまとまりを大事にしたい ➔

    違う処理まで同じに見えるのは危険 • チームルールと違うしね・・・ ➔ 自分で一から考えてみませんか?