『たのしいRuby』読みやすいプログラムを書こう [Ruby]
─────
プログラムは、コンピュータに理解させるためのものである。しかし、その一方で人間が読み書きするものでもあります。
同じように動作するプログラムでも、人間が読みやすいものもあれば、そうでないものもあります。
この読みやすさは、プログラムの設計や構造だけではなく、「見た目」によっても左右されます。
プログラムの見た目をよくするためのポイントとして、以下の三つの点があげられます。
・改行と「;」(セミコロン)
・インデント
・空白
◆改行と「;」
Rubyの文法の特徴の一つに、改行を文の区切りとして使えることがあげられます。
これは、「区切りを書くのが面倒」といった理由だけで、このようになっているわけではありません。
「改行」そのものを、一種の自然な区切りと見なそう、ということなのです。
そのため、適切に改行することが、読みやすいプログラムへの第一歩となります。
・こまめに改行する
一般的に、改行はこまめに行った方が見やすいプログラムになります。
もちろん、やたらと改行する必要はありませんが、1行が80字を越えるような場合、どこかで改行した方がよいでしょう。どうにも改行できそうにない場合には、プログラムの設計や構造自体を見直した方がよいかもしれません。
・ふだん「;」は使わない
改行以外に、文の区切りになる記号として「;」があります。1行に複数の文を書きたい場合に使えます。たとえば、
str = "hello"; print str
と書くのは、
str = "hello"
print str
と書くのと同じ意味になります。
しかし、「;」を多用すると、プログラムが読みにくくなりがちです。
使う前に、どうしても同じ行に書かなければいけないか? と自問してみましょう。
◆インデント
インデントとは「字下げ」のことです。
プログラムの行頭に空白文字をいくつか並べて、まとまりを強調するために使います。
本書では、空白文字2つをインデント1つとしています。
次の例では、printの2行がif~endの内部にある処理、ということをわかりやすくするために、インデントを行っています。
if a == 1
print message1
print message2
end
繰り返しなどが入れ子になったときには、インデントをさらに深くします。
こうすると、文と繰り返しの対応関係が、わかりやすくなります。
while a < 10
while b < 20
b = b + 1
print b
end
a = a + 1
print a
end
インデントを行うべき場所として、つぎのようなところがあげられます。
・条件分岐
・繰り返し
・ブロック
・メソッドやクラスの定義
インデントする際には、以下のことを守りましょう。
・何でもないところで突然字下げしたりしない
・インデントの幅は揃える
◆空白
空白は、プログラム中のいたるところで現れます。次のことに気をつけましょう。
・空白の長さはそろえて、バランスよく
特に、演算子の前後の空白は同じ長さにしないと、妙な文法エラーが起きることがあります。
たとえば、aとbを足したいとき、空白の書き方によっては意図せぬ演算になってしまいます。
a+b 〇好ましい書き方
a + b 〇好ましい書き方
a +b ×間違った書き方
a+ b △好ましくない書き方
「a +b」は、「+b」という引数を持った「a」というメソッドのメソッド呼び出し「a(+b)」と誤解されてしまいます。
「+」の前後の空白をバランスよく書いてあれば、このようなことは起きません。
◆よいスタイル
よいスタイルを身につけるには、他の人の書いたRubyのプログラムを読んで、それを真似るところから始めるのがよいでしょう。プログラムの内容についても、スタイルについても、上達するには他の人のプログラムをたくさん読むことが欠かせません。
─────
よいプログラムとは、正しく動作し、読みやすくて保守が容易なプログラムだと思います。
正しく動作するプログラムを書くためには、読みやすくて誤解の少ない書き方を身につけることが有用なのですが…
(by 心如)
─────
コメント 0