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

項目名と変数名のジレンマ

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for 釘野雅史 釘野雅史
May 23, 2024
91

 項目名と変数名のジレンマ

Avatar for 釘野雅史

釘野雅史

May 23, 2024
Tweet

Transcript

  1. 2 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 自己紹介 • 名前

    ◦ 釘野 雅史 / Masafumi Kugino • 業務 ◦ 会員のサイト利用率向上 ▪ 記念日登録推進 ▪ くじ引き機能の実装 ▪ 新規メールバッチの実装 • おすすめ🍰 生チョコケーキ by L'AURA(ローラ) 生チョコをそのままケーキにしました! という圧倒的なチョコ感が良かったです。
  2. 12 © Cake.jp Co.Ltd. All Right Reserved.|Confidential つまり ケーキ屋さんの店舗番号 =

    orderテーブルのuserId = companyテーブルのid となっています。 そして、ここまでは「前提」です。 私が入社する前から、サイトは運用されており、 今お話した内容は、すでに実装されている状況でした。 前提
  3. 13 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 不満のポイント システムのコードでは、カラム名に合わせて $userIdという変数が利用されていました。

    しかし、仕様書や管理画面など実態に即した項目名は、 ケーキ屋さんの店舗番号です。 この項目名と変数名の不一致に、開発をしていく上での不満を感じました。 どうすれば、この不満が改善されるか、当時の私は3つほど案を考えました。 問題編
  4. 14 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 【案1】 データベースのテーブル名、カラム名を実態に即したものに変更する。 不採用の理由

    データベースの構成を変更すると影響範囲が広すぎるため、改修のための工数がかかりすぎて、実 施が現実的ではない。 解決編
  5. 15 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 【案2】 項目名をカラム名に即したものに変更する。 不採用の理由

    「ケーキ屋さんの店舗番号」を「使用者番号」と言い換えても、そもそも、実態はお店の番号であり、項 目名をカラム名に合わせても意味がない。 解決編
  6. 16 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 【案3】 コーディングする際に変数名を項目名に即した名前にして、そこに値を代入する。 例:$shopId

    = $orderData[‘userId’]; 採用した理由 これならば、大規模な改修の必要がなく、実態が分かりやすい変数名になります。 そして、それ以降のコードの読み解きが楽になることを期待しました。 解決編
  7. 18 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 結果として何が起こったかというと $userId に加えて

    $shopId $storeId $companyId など、コードの中に、同じ番号に似たような変数名が乱立してしまいました。 新しい混乱を招いた
  8. 19 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 問題点1 以下のようなカラム名と変数名のことなるコードがシステム全体に分散していた。 例1:$shopId

    = $orderData[‘userId’]; 例2:$companyId = $Order->getUserId(); 対策 コードの一箇所にデータベースのカラム名を変更するという知識を集積させた。 名前の変更用クラスを作った。 また、それ用のフォルダやネームスペースで区切った。 反省と改善
  9. 20 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 問題点2 開発フローの中で、動作レビューのみで、コードレビューの文化がなかった。 当時は、開発者の人数も少なく、入れ替わりも多かった。

    各々が任意で声を掛け合いながら、コーディングをしていた。 対策 Githubのプルリクエスト機能の利用し、コードレビューを必須にした。 他の開発者のチェックなしに、本番用コードへ修正を追加できなくした。 反省と改善
  10. 22 © Cake.jp Co.Ltd. All Right Reserved.|Confidential • 今回の課題 ◦

    『カラム名や変数名が、項目名や実態と一致していない』 • 影響 ◦ チームへの参入者への教育コストが増える。 ◦ コードを読む際に、言葉を変換する認知負荷が増える。 ▪ コードレビューが面倒なものになってくる。 • 教訓 ◦ コーディングにおいて命名は大事。 ◦ ただし既存の命名に不満があっても、良かれと勢いで変えない。 ▪ 事前に課題意識の共有や知識の集積をする。 - まとめ -