人気ブログランキング | 話題のタグを見る

DRY

Ruby on Rails の設計方針のひとつに、DRY(Don't Repeat Yourself) というのがある。

コーディングの際に、RDB と model の両方で同じ定義を繰り返すようなことをしないようにしようということだ。何かの変更があった時に、2か所を変更しないといけない場合は、一方だけを変更したことによるバグが発生して、バグトラッキングに手間がかかってしまうかもしれない。変更が一ヶ所のみで行われていればそのような心配はない。

コマンドラインから文字を入力して、それを処理するというプログラムはよく必要になるが。普通にプログラムすると次のようになるだろう。

print 'prompt> '
line = gets.chomp
while line != 'exit'
  eval line
  print 'prompt> '
  line = gets.chomp
end

ただ、この場合 print 'prompt> '; line = gets.chomp; という同じコードが2回出現している。このプログラムに手を入れて文字列を取り込む際に line = gets.chomp.foo のように文字列にひとひねり加えたいと思ったとすると、最初の入力分だけを変更して、もう一つの変更を忘れてしまい、不審な動作が現われてしまうかもしれない。

次のようにコーディングすると、重複したコードが現れないのでそのような心配はなくなる。

while true
  print 'prompt> '
  line = gets.chomp
  break if line == 'exit'
  eval line
end

こんな小さいスクリプトでも、日頃から DRY に気をつけておけば、プログラムを書くのがもっと楽しくなる。
by tnomura9 | 2008-10-12 08:55 | Ruby | Comments(0)
<< Ruby on Rails の... loop do と while... >>