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
大切な名前[Intro]公開版
Search
Infiniteloop
October 17, 2023
Programming
0
82
大切な名前[Intro]公開版
第一回のタガヤスで説明した
プログラムにおいて「名前」は大切だよね。というお話の前振りです
Infiniteloop
October 17, 2023
Tweet
Share
More Decks by Infiniteloop
See All by Infiniteloop
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2025年版)
infiniteloop_inc
16
62k
俺の PHP プロファイラの話 PHP スクリプトで PHP 処理系のメモリをのぞき込む
infiniteloop_inc
1
570
心理的安全性を学び直し、 「いい組織とは何か?」を考えてみる
infiniteloop_inc
1
820
ゼロからつくる 2D物理シミュレーション ~物理現象をコードに落とし込む方法~
infiniteloop_inc
1
1.2k
詫び石の裏側
infiniteloop_inc
0
800
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
7
34k
リファクタリングで実装が○○分短縮した話
infiniteloop_inc
0
240
ADRという考えを取り入れてみて
infiniteloop_inc
0
250
500万行のPHPプロジェクトにおけるログ出力の歩み
infiniteloop_inc
0
190
Other Decks in Programming
See All in Programming
Flutterアプリ運用の現場で役立った監視Tips 5選
ostk0069
1
210
Swift Concurrency 年表クイズ
omochi
3
220
なぜ強調表示できず ** が表示されるのか — Perlで始まったMarkdownの歴史と日本語文書における課題
kwahiro
2
310
CSC509 Lecture 10
javiergs
PRO
0
170
Bakuraku E2E Scenario Test System Architecture #bakuraku_qa_study
teyamagu
PRO
0
640
ボトムアップの生成AI活用を推進する社内AIエージェント開発
aku11i
0
1.6k
AI駆動開発ライフサイクル(AI-DLC)のホワイトペーパーを解説
swxhariu5
0
440
業務でAIを使いたい話
hnw
0
250
flutter_kaigi_2025.pdf
kyoheig3
1
120
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
390
AI時代に必須!状況言語化スキル / ai-context-verbalization
minodriven
3
370
Functional Calisthenics in Kotlin: Kotlinで「関数型エクササイズ」を実践しよう
lagenorhynque
0
110
Featured
See All Featured
Music & Morning Musume
bryan
46
6.9k
GraphQLとの向き合い方2022年版
quramy
49
14k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
Rails Girls Zürich Keynote
gr2m
95
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Building Applications with DynamoDB
mza
96
6.7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Optimizing for Happiness
mojombo
379
70k
Gamification - CAS2011
davidbonilla
81
5.5k
Bash Introduction
62gerente
615
210k
Transcript
大切な名前 introduction 公開版 株式会社インフィニットループ仙台支社 中野 明
もくじ 1. 自己紹介 2. テーマ 3. ダメコードとは 4. コードを読む 5.
命名 6. 最後に 7. 予定 8. 会社より
1. 自己紹介 名前 : 中野 明 現在 所属 : インフィニットループ仙台支社
(1 年 ) 業務 : スマホゲーのサーバ開発 (PHP) 過去 業務 : ゲーム開発 (10 年 ) コンシューマ・スマホ・ガラケー 趣味 お菓子づくり、レザークラフト 最近ボビンレース始めました
2. テーマ テーマ「大切な名前」
2. テーマ テーマ「大切な名前」 • レビューで名前を指定することが多い ( 若干過剰 ) • なぜ、自分がそこにこだわるのか整理したい
2. テーマ テーマ「大切な名前」 • レビューで名前を指定することが多い ( 若干過剰 ) • なぜ、自分がそこにこだわるのか整理したい
「俺は間違ってない!」と叫びたい
2. テーマ テーマ「大切な名前」 • レビューで名前を指定することが多い ( 若干過剰 ) • なぜ、自分がそこにこだわるのか整理したい
「俺は間違ってない!」と叫びたい 今回はテーマ説明のみです
3. ダメコードとは ところで… • いわゆるダメコードに出会ったことがある?
3. ダメコードとは ところで… • いわゆるダメコードに出会ったことがある? • 自分のコードはまずまず?
3. ダメコードとは ところで… • いわゆるダメコードに出会ったことがある? • 自分のコードはまずまず? • では、なぜ、ダメコードはなくならない?
3. ダメコードとは コードの使われ方 • 新規 (write) ----- 以下の作業が多数 ----- •
修正 (read, write) • 追加 (read, write) • 削除 (read, delete) • レビュー (read)
3. ダメコードとは つまり • 読むことの方が多い • が、書いた時に読まれることを意識していない ➔ アウトプットを作り上げている ➔
書いている間は良いコード • 読まれた瞬間にダメコードが発生する
3. ダメコードとは つまり • 読むことの方が多い • が、書いた時に読まれることを意識していない ➔ アウトプットを作り上げている ➔
書いている間は良いコード • 読まれた瞬間にダメコードが発生する 「読まれなければどうということは無い!!」
3. ダメコードとは つまり • 読むことの方が多い • が、書いた時に読まれることを意識していない ➔ アウトプットを作り上げている ➔
書いている間は良いコード • 読まれた瞬間にダメコードが発生する 「読まれなければどうということは無い!!」 必ず読まれます。
4. コードを読む コードを読むとは ? • 処理単位での意味の理解 • 問題になりそうな箇所を把握する ➔ (I/O,
DB, GPU, マルチスレッド ) • 自分の処理をどこに置くか
4. コードを読む コードを読むとは ? • 処理単位での意味の理解 • 問題になりそうな箇所を把握する ➔ (I/O,
DB, GPU, マルチスレッド ) • 自分の処理をどこに置くか 行動のためのヒントを探す
4. コードを読む どうやってヒントを読み取るか • 名前 ➔ 名前から処理を想像する • クラス構造 ➔
クラスのつくりから責務を想像する • コードブロック ➔ コードのまとまりから流れを想像する
4. コードを読む どうやってヒントを読み取るか • 名前 ➔ 名前から処理を想像する • クラス構造 ➔
クラスのつくりから責務を想像する • コードブロック ➔ コードのまとまりから流れを想像する いろいろある!
5. 命名 なぜ名前か • 一番、目につきやすい対象 • 簡単に変えていける • 影響範囲が少ない
5. 命名 なぜ名前か • 一番、目につきやすい対象 • 簡単に変えていける • 影響範囲が少ない 名前の改善から次の改善がみつかる
... こともある
5. 命名 要は見やすければいいんでしょ • 単純な名前つけてるよ • bool を返すメソッドは Is でいいんでしょ
•やっていることは全部書いているよ
5. 命名 要は見やすければいいんでしょ • 単純な名前つけてるよ ➔ 意味を持たない Get/Service/Manager が氾濫してません? •
bool を返すメソッドは Is でいいんでしょ ➔ そのメソッドはもっと大きなことしてません ? •やっていることは全部書いているよ ➔ 説明過多になっていません?
5. 命名 要は見やすければいいんでしょ • 単純な名前だけで構成されている Get だけで意図を表現できる? function version() {
$database = DataBase::get(); $handler = $database->getHandler('environment'); $entity = $handler->getEntity(); return $entity->getVersion(); }
5. 命名 要は見やすければいいんでしょ • 単純な名前だけで構成されている Get だけで意図を表現できる? function version() {
$database = DataBase::instance(); $handler = $database->createHandler('environment'); $entity = $handler->fetchEntity(); return $entity->getVersion(); }
5. 命名 要は見やすければいいんでしょ • 名前以上のことをやっている bool うんぬんより検証作業の意味合いが強い class Entity {
private $id; public function isEnable() { return STATUS_OK === DataBase::instance() ->createHandler('entity') ->fetch($this->id) ->status(); } }
5. 命名 要は見やすければいいんでしょ • 名前以上のことをやっている bool うんぬんより検証作業の意味合いが強い class Entity {
private $id; public function validate() { return STATUS_OK === DataBase::instance() ->createHandler('entity') ->fetch($this->id) ->status(); } }
5. 命名 要は見やすければいいんでしょ • やたらと説明的 ( 引数被り / 冗長 )
引数で説明できません? function createBurgerFromBreadAndCheese( Bread $bread, Cheese $cheese ){ /* 処理いろいろ */ }
5. 命名 要は見やすければいいんでしょ • やたらと説明的 ( 引数被り / 冗長 )
引数で説明できません? function createBurger( Bread $bread, Cheese $cheese ){ /* 処理いろいろ */ }
5. 命名 要は見やすければいいんでしょ • 内部ロジックの露出 モンスターの持つ処理としてメモリ解放はどうでしょう ? class Monster {
private $buffer; public function freeMemory() { Memory::free($this->buffer); } }
5. 命名 要は見やすければいいんでしょ • 内部ロジックの露出 モンスターの持つ処理としてメモリ解放はどうでしょう ? class Monster {
private $buffer; public function destroy() { Memory::free($this->buffer); } }
5. 命名 いろいろな意見 • 名前考えるのだるくて • パッと見のまとまりを大事にしたい • チームルールと違うしね・・・
5. 命名 いろいろな意見 • 名前考えるのだるくて ➔ 変な名前だと読む方はもっとだるいので • パッと見のまとまりを大事にしたい ➔
違う処理まで同じに見えるのは危険 • チームルールと違うしね・・・ ➔ 自分で一から考えてみませんか?
6. 最後に 本読めばいいじゃない • リーダブルコードとか • コードコンプリートとか • リファクタリング本とか
6. 最後に 本読めばいいじゃない • リーダブルコードとか • コードコンプリートとか • リファクタリング本とか いっぱい出ているということはそれだけ需要がある
6. 最後に 本読めばいいじゃない • リーダブルコードとか • コードコンプリートとか • リファクタリング本とか いっぱい出ているということはそれだけ需要がある
自分がしゃべったっていいじゃないか !!
7. 予定 どんな話するの? • 明示的な名前 • 名前から構造をつくる • 階層による名前の変化 •
名前の省略
7. 予定 どんな話するの? • 明示的な名前 • 名前から構造をつくる • 階層による名前の変化 •
名前の省略 注 : あくまでも予定 !
7. 予定 どんな話するの? • 明示的な名前 • 名前から構造をつくる • 階層による名前の変化 •
名前の省略 どうぞお付き合いください !!
8. 会社紹介 インフィニットループ仙台支社
8. 会社紹介 インフィニットループ仙台支社 炊飯器が導入されました!
8. 会社紹介 インフィニットループ仙台支社ではプログラマを募集してい ます。ぜひお声がけください! 是非、同じ釜の飯を食いましょう!!