リーダビリティとはなんぞや
嘘ですそんな大層なお話ではないです。
いきなりツッコミたくなる人はいっぱいいるだろうとは思いつつ、
酔った勢いで書きたくなったのでちょっとそこの若ぇの俺の話を(ry
自分のサイトを手っ取り早く WordPress で構築しようとあれこれ作業してるわけだが、
まぁあっちこっちのサイトからコピペするようなコードもちらほらあるわけで。
例えば WordPress にカスタム投稿タイプを足したいとしましょう。
話の根本は別に WordPress に限った話でもないけど。
よくある系
雰囲気としてはこういう感じ。
// カスタム投稿タイプ : Hoge
register_post_type(
'hoge',
array(
'label' => 'Hoge',
'hierarchical' => false,
'public' => true,
'query_var' => false,
'menu_position' => 5,
'has_archive' => true,
'rewrite' => array('slug' => 'art'),
'supports' => array('title','editor','thumbnail','custom-fields')
)
);
これはQiitaだからというのもあってきれいにインデントされてるけど、
タブじゃなくスペース2個のコードです。
気持ち悪い点1 : タブが好き
この点はすごく異論がある部分だとは自覚している。
だからカチンときた人は酔っ払いの戯言だと思って大人の対応をお願いしたい。
タブによるインデントは、
・幅を何文字相当に設定するか
・フォントは何使うか
・フォントサイズ
等で簡単にズレるので、
特にチーム開発では俺だっておすすめしない。
でもね、俺はほとんど一人で書いとるんよ。
同僚プログラマはいる(いた)けど、別の案件やってもらってたりするし、
あんまり同じ仕事を一緒にというケースも少ない。
そういう人多いんじゃないかな?
実際どうなんだろ。
単純に行頭のインデントをタブ化するとこうなる。
// カスタム投稿タイプ : Hoge
register_post_type(
'hoge',
array(
'label' => 'ほげ',
'hierarchical' => false,
'public' => true,
'query_var' => false,
'menu_position' => 5,
'has_archive' => true,
'rewrite' => array('slug' => 'hoge'),
'supports' => array('title','editor','thumbnail','custom-fields')
)
);
Qiitaの表示だから、という面はあるものの、
俺はこのくらい送られてるほうが読みやすいのだ。
気持ち悪い点2 : ダブルクオーテーションが好き
この点もまぁ個人の好みによるところは大きいとは思いつつ、
言語仕様的にもメリット・デメリットあるので
言いたいこと言ってるだけで論争するつもりはない。
シングルクォーテーションをダブルクオーテーションに変えるとこうなる。
// カスタム投稿タイプ : Hoge
register_post_type(
"hoge",
array(
"label" => "ほげ",
"hierarchical" => false,
"public" => true,
"query_var" => false,
"menu_position" => 5,
"has_archive" => true,
"rewrite" => array("slug" => "hoge"),
"supports" => array("title","editor","thumbnail","custom-fields")
)
);
そんな劇的な変化はないな。
ちなみに自分のCoda上ではこんな雰囲気ビフォーアフター。
↓
クオート内が黄色だから、というのもあるのは重々承知しつつ、
特に12,13行目あたりの array() の中で視認性上がってる、という気がする。
なお、海外に一度も出たことがない日本人で日本語キーボードを使っている身分ですので、
海外のUSキーボードな人たちにはシングルのが打つの楽だから、
とかもわかってる。うん。
気持ち悪い点3 : スペース開けたい症候群
( ) の中身を書くときはスペース入れたい。
あと引数がいくつかある場合のカンマのうしろにも入れたい。
// カスタム投稿タイプ : Hoge
register_post_type(
"hoge",
array(
"label" => "ほげ",
"hierarchical" => false,
"public" => true,
"query_var" => false,
"menu_position" => 5,
"has_archive" => true,
"rewrite" => array( "slug" => "hoge" ),
"supports" => array( "title", "editor", "thumbnail", "custom-fields" )
)
);
いや、独りよがりなのはわかってる。
でも「したい」んだ。
前述のビフォーアフター見ればなんとなく言ってる気持ちはわかってくれるだろう?
気持ち悪い点4 : 値の頭を揃えたい業を背負った生き物
まずは見てくれ。
// カスタム投稿タイプ : Hoge
register_post_type(
"hoge",
array(
"label" => "ほげ",
"hierarchical" => false,
"public" => true,
"query_var" => false,
"menu_position" => 5,
"has_archive" => true,
"rewrite" => array( "slug" => "hoge" ),
"supports" => array( "title", "editor", "thumbnail", "custom-fields" )
)
);
これが「ぼくのかんがえたさいきょうのよみやすさ」だ。
いい、みなまで言うな。
君の気持ちはよくわかる。
だが、俺にも「気持ち」は確かに存在しているのだ。
配列が入れ子になってる場合で、ちょこちょこ調整するようなケースではさらにこうする。
// カスタム投稿タイプ : Hoge
register_post_type(
"hoge",
array(
"label" => "ほげ",
"hierarchical" => false,
"public" => true,
"query_var" => false,
"menu_position" => 5,
"has_archive" => true,
"rewrite" => array( "slug" => "hoge" ),
"supports" => array(
"title",
"editor",
"thumbnail",
"custom-fields"
)
)
);
もうタブだらけ。
でもこの「ちょこちょこ調整する」ってのが実作業上では地味に重要で、
ブラウザで確認→やっぱこの値変えようみたいなときに
エディタ上でダブルクリックによる選択をしたりするんだが、
その時はやっぱり行が別れてたほうがパッと見でやりやすい。
少なくとも俺は。
ここまで字送りするんであれば、やっぱ戻そうとかなったときの手数を踏まえると、
スペースじゃなくタブのほうが効率よくなるのである。
で、なんなの
いや、だからどうというわけではないが、
20年近くエンジニアしてきて、同じスタイルの記述をあんまりみないなーと思って。
前回の投稿でコードまるっと貼ったときも、こまごまタブ数の調整をしてたわけだけど、
そのときになんとなくふわっと思ったことを今回書いてみました。
ただそれだけ。