タイトル
プレファクタリング―リファクタリング軽減のための新設計
著者
Ken Pugh (著), 木下 哲也 (翻訳), 有限会社 福龍興業 (翻訳)
出版社
オライリージャパン
Amazonで購入する

「プレファクタリング」(Prefactoring)とは、pre(事前に) + refactoring(リファクタリング)という意味の新造語です。リファクタリングとは、コーディング中にコードの動きを変えずにコードを改善する手法のこと。そして、プレファクタリングは、コーディング前にリファクタリングを行うことで、リファクタリングの効率をさらに上げようというもので、… (略)

本書裏表紙のコメントより抜粋

プレファクタリングは、自分のこれまでの経験や知識さらには他人の経験や知識を元に、リファクタリングの効率を上げるような設計を行うというものです。かなり簡単に言ってしまうと、設計や実装時のイディオムを覚えるということになると思います。例えば、「コンポーネントは、どのように機能するのかよりもどう役に立つのかを考えることで、インターフェースに意識を集中し、抽象化を行うようにする」といった具合です。

これまで、コーディングにおけるイディオム、良い設計への指針などについて書かれた本はいくつかありました。それらをまとめたものが本書です。全体で250ページ強のボリュームながら、良いことが書かれているなーという印象を受けました。

コーディングに携わるプログラマや、クラス設計に携わる人にぜひお勧めする一冊です。オライリーの本なので、品質の高さは保証つきです。

おぼえがき

すべての状況に対して効果があるものは存在しない

ある原則を適用するかどうかは、その状況(コンテキスト)により異なります。それは例えば、医療システムのようにシステムのバグが人の命に関わるような状況であれば、どれだけ冗長な例外チェックも必要とされるかもしれないということです。

名前の意味

あるものを表す言葉に、適切な名前をつけなければ後々混乱することになります。例えば、「ポテトチップス」という名前は、「一袋のポテトチップス」を表すのか(物)、「レシートに印字されるポテトチップス」を表すのか(種類)、どちらのことを言っているのかがわかるようにしなければなりません。

ほとんどの String は 単なる String 以上のものである

String は単なる文字列を表します。それ以上でもそれ以下でもありません。つまり、String は基本データ型なのです。人の属性を表す「名前」には、String ではなく、Name という抽象データ型を使いましょう。

参考

  • 変な癖がつく前に読むべし!
  • リファクタリングはいまや標準
  • Javaを使うなら、絶対に読んでおくべき一冊