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
67
大切な名前[Intro]公開版
第一回のタガヤスで説明した
プログラムにおいて「名前」は大切だよね。というお話の前振りです
Infiniteloop
October 17, 2023
Tweet
Share
More Decks by Infiniteloop
See All by Infiniteloop
俺の PHP プロファイラの話 PHP スクリプトで PHP 処理系のメモリをのぞき込む
infiniteloop_inc
0
270
心理的安全性を学び直し、 「いい組織とは何か?」を考えてみる
infiniteloop_inc
0
340
ゼロからつくる 2D物理シミュレーション ~物理現象をコードに落とし込む方法~
infiniteloop_inc
0
410
詫び石の裏側
infiniteloop_inc
0
370
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
6
25k
リファクタリングで実装が○○分短縮した話
infiniteloop_inc
0
140
ADRという考えを取り入れてみて
infiniteloop_inc
0
130
500万行のPHPプロジェクトにおけるログ出力の歩み
infiniteloop_inc
0
110
I ❤ Virtual Machines 仮想環境をより便利に使うツールたち
infiniteloop_inc
0
83
Other Decks in Programming
See All in Programming
CSC509 Lecture 09
javiergs
PRO
0
140
Amazon Qを使ってIaCを触ろう!
maruto
0
400
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
2
660
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
330
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
200
みんなでプロポーザルを書いてみた
yuriko1211
0
260
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
290
cmp.Or に感動した
otakakot
1
120
Quine, Polyglot, 良いコード
qnighy
4
640
EventSourcingの理想と現実
wenas
6
2.3k
Ethereum_.pdf
nekomatu
0
460
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
4 Signs Your Business is Dying
shpigford
180
21k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Being A Developer After 40
akosma
86
590k
Into the Great Unknown - MozCon
thekraken
32
1.5k
How GitHub (no longer) Works
holman
310
140k
Music & Morning Musume
bryan
46
6.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
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. 会社紹介 インフィニットループ仙台支社ではプログラマを募集してい ます。ぜひお声がけください! 是非、同じ釜の飯を食いましょう!!