感想:新装版 リファクタリング 既存のコードを安全に改善する

リファクタは日常的に実施すべきと教えてくれる名著

本書で登場する表現である「コードの不吉な臭い」

不吉な臭いとは比喩表現であり、リファクタリングが必要そうなコード(悪い設計)から感じられる雰囲気を意味します。複雑度が高く、モジュールごとの役割が不明確で、暫定対応が恒久対応となってしまったコード。そんなコードを読んだ時の感覚が、コードから不吉な臭いがするとみなせます。

そんなコードを改善するための基礎知識を身につける上で、本書は間違いなく役立ちます。本書の内容は、古いJavaをベースとして書かれていますが、クラスをサポートしている言語を習得した人であれば、内容を理解できると思われます。第二版(Javascript版)が2019年に出版されているため、旧版となったJava版はKindle以外だと手に入りにくくなるかもしれません。(Kindle版は固定レイアウトなので、オススメしませんが……)

本書で記載されている内容は、日々の業務でコードの不吉な臭いを嗅ぎ取り、少しずつ修正していく事を是とした内容です。「不吉な臭いの種類」と「臭いに応じたリファクタリング方法」とのリストがあるので、自分の知りたいリファクタリング方法が簡単に参照できる作りになっています。

本書で取り上げられるリファクタリング方法は、人によっては当たり前と思われる内容です。しかし、業務では、その当たり前が出来ていない人が多いです。例えば、「連続するprint文(バナーの出力文)のメソッド化」「コードを処理単位(連続する計算処理、if文、for文などの単位)で抽出してメソッド化」あたりは簡単な作業ですが、「そのレベルのメソッド化は、やり過ぎではないか」と否定的な人がいます。

本書を読めば、上記の作業に対する重要性が理解できますし、そのような否定的な人たちを根拠を踏まえて説得できるようになります。不吉な臭いに鈍感な開発メンバーが居る場合は、本書を読ませるか、コードレビューの場で臭いに対する感受性を高めさせた方が良いです。本書を最後まで読み通すと、「不吉な臭いが嗅ぎ取れるようになる事は、より良いオブジェクト指向設計が分かる事」ではないかと感じられました。オブジェクト指向にピンとこない人も、本書の対象者かもしれません。

                                   

現実問題として、会社がリファクタの価値を理解しない

現実問題として、リファクタリングの価値を知りながら、業務で実践できていない人が居ると思われます。本書でも、リファクタリングを現実のものとするための「現実の壁」として、以下の懸念事項が取り上げられていました。

  • リファクタリングのやり方がわからない。
  • 利益が長期的なものなら、何も今がんばることもない。長期というなら、利益を得る前に、自分は今のプロジェクトを去っているかもしれない。
  • コードをリファクタリングするのは余分な作業だ。給料は、「新たな」機能を書くことに対して支払われているのだ。
  • リファクタリングは既存のプログラムを壊してしまう。

本書 P394 第13章 リファクタリング、再利用、現実

上記の懸念点に対するヒントが本書で記載されていましたが、参考情報レベルでしかありません(技術的な事柄を除く)。古い日本企業に務めている場合では、リファクタリング許可を得るための交渉スキルが要求されると思われます。過去の慣習から外れた行動(リファクタリング)は嫌われますし、許可を得ずにリファクタリングしてプロダクトを破壊するリスキーな行動も取りづらいです。そのような社内政治的な立ち回り方は、本書よりも別の書籍が参考になると思われます。

                  

おすすめ

1件の返信

  1. 2020年1月16日

    […] Review:新装版 リファクタリング 既存のコードを安全に改善する […]