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
72
大切な名前[Intro]公開版
第一回のタガヤスで説明した
プログラムにおいて「名前」は大切だよね。というお話の前振りです
Infiniteloop
October 17, 2023
Tweet
Share
More Decks by Infiniteloop
See All by Infiniteloop
俺の PHP プロファイラの話 PHP スクリプトで PHP 処理系のメモリをのぞき込む
infiniteloop_inc
0
380
心理的安全性を学び直し、 「いい組織とは何か?」を考えてみる
infiniteloop_inc
0
470
ゼロからつくる 2D物理シミュレーション ~物理現象をコードに落とし込む方法~
infiniteloop_inc
1
630
詫び石の裏側
infiniteloop_inc
0
510
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
7
29k
リファクタリングで実装が○○分短縮した話
infiniteloop_inc
0
170
ADRという考えを取り入れてみて
infiniteloop_inc
0
170
500万行のPHPプロジェクトにおけるログ出力の歩み
infiniteloop_inc
0
130
I ❤ Virtual Machines 仮想環境をより便利に使うツールたち
infiniteloop_inc
0
110
Other Decks in Programming
See All in Programming
Jakarta EE meets AI
ivargrimstad
0
350
楽しく向き合う例外対応
okutsu
0
660
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
230
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
990
Rails アプリ地図考 Flush Cut
makicamel
1
130
Ça bouge du côté des animations CSS !
goetter
2
150
SwiftUI Viewの責務分離
elmetal
PRO
2
270
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1.2k
たのしいSocketのしくみ / Socket Under a Microscope
coe401_
8
1.3k
PHPカンファレンス名古屋2025 タスク分解の試行錯誤〜レビュー負荷を下げるために〜
soichi
1
680
Visual StudioのGitHub Copilotでいろいろやってみる
tomokusaba
1
210
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
860
Featured
See All Featured
Navigating Team Friction
lara
183
15k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.1k
Six Lessons from altMBA
skipperchong
27
3.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
It's Worth the Effort
3n
184
28k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Embracing the Ebb and Flow
colly
84
4.6k
Designing for humans not robots
tammielis
250
25k
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. 会社紹介 インフィニットループ仙台支社ではプログラマを募集してい ます。ぜひお声がけください! 是非、同じ釜の飯を食いましょう!!