<< 前 ホーム 次 >>

bakaid: 20110111

でも、リファクタリングって間違い探しみたいなとこは
あるよね。

ある関数と別の関数が似てるときとか。そいつらを抜き
出してdiff取ったりね。diff取るためにそれぞれを整えて
わざと似せたりね。

大体、リファクタリングのきっかけって違和感でしょ。
『不吉な臭い』っていう言い方もされるけど、自分の
場合、違和感っていうほうがいいかな。

『このメソッドとあのメソッド、よく似てるけど違いは
何なの?』とか。『なんでこのメソッドがこのクラスに
あるの?』とか。

初歩的な例で、こないだこんなコードを見たんだけど:

def foo
  if @a == @b
    return if @c != @d
    do_something
  end
end

パッと見、ダメだよね。

書き方としては:

def foo
  return if @a != @b
  return if @c != @d
  do_something
end

こうだし、よりベターには:

def foo
  return if @a != @b or @c != @d
  do_something
end

になる。

『パッと見』っていうのがポイントで、それは、いって
みれば、間違い探しの感覚に近い。

--

逆にいうと、こうした違和感っていうのは、個人の感覚に
よるものだから、共有するのは結構むずかしい。少なくとも
自分はそう感じるのね。

上のコードもレビューのときにチラ見したんだけど、
黙ってたんだよね。話しても共感してくれるかどうか
ビミョーだったから。まぁ、今は黙ってたことをちょっと
後悔してるんだけど (笑)。

リファクタリングの多くは、こうしたレトリックの話、
字面上の話で、くだらないっていわれたら、まぁ、
それまでの話なんだけど。でも、自分はそれを大切に
思ってるわけね。

自分は『丁寧に書こう』っていったりもするんだけど。
その『丁寧に』っていうのは、こういうレトリックの
話をいってるつもり。

--

NimotsuKunにしても、なんでStateっていう名前なの?
Stageでしょ? だって、stageData.txt読み込んでるでしょ?
って、そういうところが気になっちゃうわけ。

多分、著者からしたら、そんなことを気にするヤツは
負け組だよって話なんだろうけど。

--

だから、丁寧と迅速を両立させるにはどうするかって
ことを考えちゃうし。それでも丁寧に書きたいんだから、
丁寧に書いてもプロジェクトが回るようにできないかとか、
丁寧に書いてもビジネスにできないかとか、そういう
ことを考えちゃうわけね。

雑でもいいから速くっていうんなら、最初っからそういう
人に頼めばいいだけの話だよね。でも、そういう人は
丁寧に書けないから雑に書いてるんであってね。雑にも
丁寧にも書ける人なんて実際にはいないでしょう。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails