読者です 読者をやめる 読者になる 読者になる

リファクタリングと乱雑なコード

ソフトウェア開発

 リファクタリングテスト駆動開発の考え方が普及したせいでしょうか。
 最近、プログラミング入門者の方や、駆け始めのプログラマの方などを見ていていると、「後でリファクタリングすれば良いから」といって、乱雑なコードを書くことを正当化している場面が目立ってきているように感じます。

 そうした手法に関しては、確かにコーディングのスピードや量を改善させるのに有効なのでしょうが、個人的に不安を感じます。正しいコード・綺麗なコードを書く能力を鍛える機会を失っているのではないか、という点でです。


 とりあえずプログラミングが技術者的というより技能者的な作業であることを考えると、「正しいフォームをできるだけ多くこなして力を身につける」というスポーツでの考え方は、プログラミングにも通用すると思います。すなわち、日頃から意識して繰り返し良いなコードを書き、優れた設計を行っていく中で、やがてすらすらと淀みなく良いソフトウェアを開発できるようになる、ということです。

 そうした観点から見ると、乱雑なコードを書いてばかりいる習慣は、良いコードを書く能力の向上を阻害すると感じます。現代では体を使う機会が少なくなった結果、子供の筋力・体力が軒並み下落傾向にあるそうですが、それと同様の状態になるというわけです。

 またリファクタリングに関しては、一応良いコード・良い設計に意識を向けることになりますが、あくまですでに有るものを見ながら行う作業です。無の状態から良いコードを生み出す作業に比べれば、要求される頭や能力はそんなに高くありません。良いコードを書く能力の訓練として、最良の手段とは決していえないでしょう。スポーツに例えると、リファクタリング中心でコーディング能力を高めようとするスタンスは、ウェイトが足りない状態で筋肉トレーニングをしている状態に似ていると思います。


 現実を見ると、良いコードを書くことにこだわっていられない場面があることも確かです。スピード重視でコードを書き散らし、次にリファクタリングを行うという開発手法が、じっくり良いコードを書いていく手法より効率的な場面もざらにあるのも事実です。
 しかし自分の成長を考えると、そうした場面でも良いコードを書き出すことをないがしろにすべきではないと思いますし、機会があれば積極的に何もない状態から良いコードを書き出す経験を積んだ方が良いと考えます。初心者であったり、学生のような若年の方であったりすればなおさらです。