Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
たかが命名、されど命名
Search
44
April 04, 2019
Technology
1.2k
2
Share
たかが命名、されど命名
44
April 04, 2019
More Decks by 44
See All by 44
Kotlin MultiPlatform Projectのロマンを語る
44x1carbon
0
540
Vue.jsで考えるMVVM
44x1carbon
0
2.3k
React(Kotlin)でToDoアプリを作ってみた
44x1carbon
2
1.9k
Multiplatform Kotlin
44x1carbon
0
210
Other Decks in Technology
See All in Technology
新アーキテクチャ「TiDB X」解説とDedicated比較 TiDB Cloud Premiumのゲーム運用活用を検証
staffrecruiter
0
110
さきさん文庫の書籍ができるまで
sakiengineer
0
360
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
Databricks 月刊サービスアップデート 2026年05月号
tyosi1212
0
210
美味しいスイスチーズを作ろう🧀🐭
taigamikami
1
230
イベントストーミングとKiroの仕様駆動開発で実現する要件の認識合わせプロセス
syobochim
7
1.2k
React、まだ楽しくて草
uhyo
7
4.1k
EventBridge Connection
_kensh
2
300
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
0
360
Agentic Web
dynamis
1
110
Chart.js が簡単に使えるようになっていたので OGP 画像生成に使った話
kamekyame
0
160
ブロックチェーン / Blockchain
ks91
PRO
0
110
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
200
Design in an AI World
tapps
1
220
Building Applications with DynamoDB
mza
96
7.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
360
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
250
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.6k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
200
The untapped power of vector embeddings
frankvandijk
2
1.7k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
Scaling GitHub
holman
464
140k
Transcript
たかが命名、されど命名 思いやりのある命名をしよう
DDDとの関わり • 専門学校 3年生 「エリック・エヴァンスのドメイン駆動設計 」を読む => 分からなくて読むの諦める • 専門学校
4年生 「実践ドメイン駆動設計」を読む => なんとなく分か… 分からなくて読むの諦める
命名にどれだけ時間を 使ってますか?
プログラミングにおける命名 • クラス名 • メソッド名 • 変数名(ローカル・フィールド)
命名をこだわらなくても動く
なぜ、名前をつけるのか? 自分の書いたコードを理解できるようにする為
その時の自分だけがわかる 命名になりがち
なぜ、名前をつけるのか? 自分の書いたコードを他の人(未来の自分も含む)にも理解できる ようにする為
理解が出来ないことで起こること • 全貌の把握に時間がかかる・把握出来ない • 変更・削除していいものか判断がつかない • 機能追加・変更に臆病になってしまう
サービスの成長が遅くなる
そうならないように 良い命名をしよう!
良い命名とは? 仕様のどの部分を表現しているのかがわかりやすい事 • 探しやすい => パッケージ構成など • 理解がしやすい ◦ 名前が責務を表す
◦ 単語が仕様書に出てくる単語である
良い命名とは? 仕様のどの部分を表現しているのかがわかりやすい事 • 探しやすい => パッケージ構成など • 理解がしやすい ◦ 名前が責務を表す
◦ 単語が仕様書に出てくる単語である
良い命名が出来ない? • 仕様がちゃんと理解出来ていない・詳細に定義されていない • 単語で命名しようとしている 一度やりたいことを文章に書き出して整理しよう • クラスやメソッドが色んな事をしようとしている (多重責務)
全てを説明しようと思い 長い名前になってしまう
長い名前になってしまった時は? • 多重責務になってないか改めて考え、責務を分割しよう • 単語を省略する(おすすめしません) 省略する時は、ルールを決める
省略するのではなくスコープを切る 適切にスコープを切ることで、長い名前を短くする => 〇〇▲▲☆☆を〇〇の▲▲の☆☆にする • インナークラス ResultListItem => ResultList.Item •
クラスのフィールドにする userName => user.name
名前を考える
良い命名をする為の準備 • プログラミングでよく使われるパターン(デザインパターンなど) を覚えよう BuilderやFactory、Dao、Dto • 文法をチームで決めておく 例) メソッド名は 動詞
+ 名詞 など • チーム内での単語帳を作っておく
つけちゃ駄目な名前 • 〇〇Manager => 〇〇を管理するクラス • 〇〇Util => 〇〇を扱う便利メソッドが詰められたクラス 上の名前をつけたくなったらHOWを考えて分解しよう
• 〇〇をどう管理するのか? • 〇〇をどうやって便利にするのか?
良い名前かどうかを判断する方法 • 他の人にコードを呼んでもらう ◦ レビュー ◦ 時間をおいてセルフレビュー
命名だけでは伝えきれない 他の人に伝える方法 • 命名 • コメント • ドキュメント
伝えられる情報量 命名 コメント ドキュメント 少ない 多い
コメントやドキュメントの方が良いのでは?
伝え方とコードとの距離 命名 コメント ドキュメント 近い 遠い
コードとの距離が遠くなれば、情報の鮮度が落ちる コードを修正した時に情報の更新を忘れられ、コードと情報に差 異が生まれる。 コメントとコードで言っていること・やっていることが違うという事態 に
いつ、だれに、どれだけ伝えたいかで 伝え方を選択しよう
まとめ • 良い命名をするのは簡単ではないが、適当な命名をすると後 悔するかも? • 命名だけでは全てを伝えられない、伝える方法にはメリット・デ メリットがある • 良い命名が出来るようになるには、日々訓練するしかない
思いやりをもった命名を!