リーダブルコード
~ エンジニアとしてさらに上へ行くために ~
目次
1. リーダブルコードとは
2. 1章 理解しやすいコード
3. 2章 名前に情報を埋め込む
4. 3章 誤解されない名前
5. 5章 コメントすべきことを知る
6. 7章 制御フローを読みやすくする
7. 9章 変数と読みやすさ
8. まとめ
リーダブルコードとは
より良いコードを書くための
シンプルで実践的なテクニック
リーダブルコードとは
Read + able
  (読む) (〜できる)
リーダブルコードとは
出版 : オライリー・ジャパン
価格 : ¥ 2,592-
(2018/01/17 amazon調べ)
エンジニアが読むべき本で上位の常連の本
なぜこの本が注目されているか
・良いコードを書くための「実践的なノウハウ」が書かれている
・言語依存のサンプルコードが少ない
・例がわかりやすい
今回の目的
・今回はリーダブルコードの「一部」(特に気になった部分を抜粋して)紹介します。
→読みたくなったかたは本をレンタル!
1章 理解しやすいコード
Key Point 1
コードは他の人が最短時間で
理解できるように書かなければいけない
理解しやすいコード
数ヶ月後の自分
Key Point 1
コードは他の人が最短時間で
理解できるように書かなければいけない
賀川さん
つっちーさん
2章 名前に情報を詰め込む
Key Point 2
気取った言い回しよりも
明確で正確な方がいい
明確な単語を選ぶ
public function getTitle($id) {
...
}
public function getArticleTitleFromArchives($archive_id)
{
…
}
3章 誤解されない名前
Key Point 3
名前が「他の意味と間違えられることはないだろうか?」
と何度も自問自答する
例えば...
「コラム記事」を意味する変数を作りたい。
$column = xxxxxx;
※「column」= カラム(縦の列)
$column_article = xxxxxx;
$article = xxxxxx;
lengthとは
string substr ( string $string , int $start [, int $length ] );
string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] );
実はこの2つはまったく別物!
substr : 1バイトでの文字数
mb_substr : 文字数
同じ引数の名前でも mb_substrの場合はマルチバイト文字列の切り出しだから間違えやすい。
人によっては
バイト数?
文字数?
単語数?
と想定する可能性もある
範囲指定で使う単語
min max
→限界値
first last
→範囲指定
begin end
→包含 / 排他的範囲
a b c d
begin end
first last
ここまでのまとめ
1 : コードは他の人が最短時間で理解できるように書かなければならない
2 : 気取った言い回しよりも明確で正確な方がいい
3 : 名前が「他の意味と間違えられることはないだろうか?」と何度も自問自答する
これらを意識して関数などの名前を作る。
例)createNewAccount();
あー新しいアカウントを作成するための関数なんだなーーとわかる。
5章 コメントすべきことを知る
コメントを書く
コメントを書くことは大切
しかし、コメントを全部に書けば良いということではない
適切なコメントを書くことが重要
Key Point 4
コメントの目的は
書き手の意図を読み手に知らせること
コメント例
// 保存する新しいデータの配列を作る
$data = [
‘a’ => $fuga[‘hoge’],
‘b’ => $fuga[‘hoge_2’]
];
// TODO: もっとシンプルな書き方に直す
public function getEmployeeList (){
---
}
不要なコメント例
// Account クラスの定義
class Account {
public:
// コンストラクタ
function __construct() {
...
}
// name に新しい値を設定する
function setAccountName($name){
...
}
// この Account から name を返す
function getAccountName(){
...
}
};
コードからすぐわかることを
コメントに書かない
7章 制御フローを読みやすくする
Key Point 5
条件やループなどの制御フローはできるだけ「自然」にする
コードの読み手が立ち止まったり読み返したりしないように書く
三項演算子を使う
if($hoge === 1){
$fuga = 1;
}else{
$fuga = 2;
}
$fuga = ($hoge === 1) ? 1 : 2;
脱線 : null演算子を使う
$fuga = (isset($hoge))? $hoge : 1;
$fuga = $hoge ?? 1;
※ php 7 以上で利用可能
脱線 : useをまとめる
use somenamespaceClassA;
use somenamespaceClassB;
use somenamespaceClassC as C;
use somenamespace{ClassA, ClassB, ClassC as C};
※ php 7 以上で利用可能
9章 変数と読みやすや
Key Point 6
変数のことが見える行数を
出来るだけ減らす
一時変数はなるべく減らす
$category = getCategory();
$page->setHiddenCategory($category);
$page->setHiddenCategory(getCategory());
一時変数は何故良くないのか
● 一時変数を変更していいのかを後ろを読まないとわからない
→例えば前のページの処理の間に100行処理があったら・・・
→途中で変数が変更されても動くように担保してコードを書かなければならない
まとめ
まとめ
1 : コードは他の人が最短時間で理解できるように書かなければならない。
2 : 気取った言い回しよりも明確で正確な方がいい。
3 : 名前が「他の意味と間違えられることはないだろうか?」と何度も自問自答する。
4 : コメントの目的は書き手の意図を読み手に知らせること
5 : 条件やループなどの制御フローはできるだけ「自然」にする。コードの読み手が立
ち止まったり読み返したりしないように書く。
6 : 変数のことが見える行数を出来るだけ減らす。
まとめ
総じて言えることは...
まとめ
コードの読み手の事を考慮して
コーディングをするべき
まとめ
結果、綺麗なコードになる
エンジニアは絶対読みましょう。
有難うございました!
Good is good.
We provide opportunities to the SEKAI by fusing technology and ideas.
テクノロジーとクリエイティブでセカイをより良くする
お問い合わせはこちらから
https://giginc.co.jp/contact/

リーダブルコード