第4章 ヌルオブジェクトの導入

Java言語で学ぶリファクタリング入門の第4章は「ヌルオブジェクトの導入」です。今回はクイックフィックスによる問題の解決とソースメニューを積極的に使ってみました。

手順

isNullメソッドの作成
  1. Personクラスのnullチェックをしている箇所で、isNullメソッドを呼び出すようにする(まだisNullメソッドがないため、エラーになる)。
  2. [Ctrl + > (or <)]を押下し、エラー箇所まで移動する。
  3. [Ctrl + 1]でクイックフィックスを表示し、「Create method 'isNull()' in type 'Label'」を選択する。
  4. Labelクラスに生成されたisNullメソッドを確認し、不要なコメントを削除する。
NullLabelクラスの作成
  1. Personクラスの引数が1つのコンストラクタにてnullを指定している箇所で、nullを「new NullLabel()」に変更する(まだNullLabelクラスがないため、エラーになる)。
  2. [Ctrl + > (or <)]を押下し、エラー箇所まで移動する。
  3. [Ctrl + 1]でクイックフィックスを表示し、「Create class 'NullLabel'」を選択する。
  4. New Classウィザードが表示され、SuperclassがLabelクラスになっていることを確認し、[Finish]を押下する。
  5. NullLabelクラスにて、エラーが指摘されているため、クイックフィックスを表示し、「Add constractor 'NullLable(String)'」を選択する。
  6. 引数を1つ持つコンストラクタが生成される。
  7. しかし、引数を取らないコンストラクタに変更したいため、[Alt + Shift + c]を押下してChange Method Signatureウィザードを表示し、引数を削除する。
  8. [Alt + Shift + s]を押下してソースメニューを表示し、続けて[v]を押下して「Override/Implement Methods」を選択する。
  9. isNullメソッドを選択し、生成されたisNullメソッドをtrueを返すように変更する。
ヌルオブジェクトを成長させる
  1. NullLabelクラスにて[Alt + Shift + s]を押下してソースメニューを表示し、続けて[v]を押下して「Override/Implement Methods」を選択する。
  2. displayメソッドを選択し、生成されたdisplayメソッドに何もしない処理を記述する。

あとはnullチェックをしている箇所を削除していきます。

おさらい

  • [Ctrl + >]、[Ctrl + <]でエラー箇所に移動する。
  • [Ctrl + 1]でクイックフィックスを表示する。
  • [Alt + Shift + c]で「Change Method Signature」(ここでは引数の削除)を行う。
  • [Alt + Shift + s]でソースメニューを表示する。
  • [Alt + Shift + s + v]で「Override/Implement Methods」を行う。

疑問点

  • NullLabelクラスを生成した時に、SuperclassがLabelになっていたのは、対象のコンストラクタがLableクラスを引数の型としているからか?
  • エディタにて複数のソースを開いている場合に、ソースタブを切り替えるショートカットはないの?
    • (追記)[Ctrl + PageUp]、[Ctrl + PageDown]でした。ノートPCなのでFnが必要でした(^^;