実用的な美しいコード
「美しいコードを書きましょう」が、明確なコーディング目標として機能しうる美しさは、「ルールが少ない」ことである。
ルールが多いことは、抽象が多い、つまり本質が多いという事態を表している。
ルールが少ないことは誤解が少ない(本質を取り違えにくい)ことと同義である。
また、当然であるがルールは定義可能、そして定義も美しくなければならない。
例えば「わかりやすいコード」「読みやすいコード」はいずれも定義が美しくないため、誤解の元である。
余談ですが、定義可能なコーディングルールを設定できてますか?
最も美しい最強のルール
それは「動くこと」である。おそらくこれを上回るルールを作ることは不可能である。
これは当たり前であるから、不毛な例示と思われるかもしれないが、「わかりやすい」とか「読みやすい」という不毛なルールは守られることはないので、「動くこと」というルールが唯一適用されるという事実を明確に知ることができる。
適用できそうなルール
ルールが少ないというのは意識しずらいので、ルールがただ一つの方が有力である。
つまり、「すべてのコードは〇〇である」が美しさとして適当である。
そう考えると、以下のようなものが考えられる
- すべてのコードは実行である
- すべてのコードはI/O(引数/返り値)である
- すべてのコードは関数(写像)である
1は極めて多くの現場で目にするコードでもはや「動くコード」と同じくらい暗黙です。
2と3は極めて魅力的ですね、for文の使い方やメソッドの使い方もきれいに縛れます。ただ、定数の宣言は非推奨になりますね。
先入観
美しいから実用的で効率的であるという思い込みは間違っています。
おそらく皆さんが求めているのは「実用的なコード」「効率的なコード」です。
「美しいコード」と命名するのはよした方がよいですよ。