大切な名前
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. 会社紹介
インフィニットループ仙台支社ではプログラマを募集してい
ます。ぜひお声がけください!
是非、同じ釜の飯を食いましょう!!

大切な名前[Intro]公開版