第4章 ヌルオブジェクトの導入
Java言語で学ぶリファクタリング入門の第4章は「ヌルオブジェクトの導入」です。今回はクイックフィックスによる問題の解決とソースメニューを積極的に使ってみました。
手順
isNullメソッドの作成
- Personクラスのnullチェックをしている箇所で、isNullメソッドを呼び出すようにする(まだisNullメソッドがないため、エラーになる)。
- [Ctrl + > (or <)]を押下し、エラー箇所まで移動する。
- [Ctrl + 1]でクイックフィックスを表示し、「Create method 'isNull()' in type 'Label'」を選択する。
- Labelクラスに生成されたisNullメソッドを確認し、不要なコメントを削除する。
NullLabelクラスの作成
- Personクラスの引数が1つのコンストラクタにてnullを指定している箇所で、nullを「new NullLabel()」に変更する(まだNullLabelクラスがないため、エラーになる)。
- [Ctrl + > (or <)]を押下し、エラー箇所まで移動する。
- [Ctrl + 1]でクイックフィックスを表示し、「Create class 'NullLabel'」を選択する。
- New Classウィザードが表示され、SuperclassがLabelクラスになっていることを確認し、[Finish]を押下する。
- NullLabelクラスにて、エラーが指摘されているため、クイックフィックスを表示し、「Add constractor 'NullLable(String)'」を選択する。
- 引数を1つ持つコンストラクタが生成される。
- しかし、引数を取らないコンストラクタに変更したいため、[Alt + Shift + c]を押下してChange Method Signatureウィザードを表示し、引数を削除する。
- [Alt + Shift + s]を押下してソースメニューを表示し、続けて[v]を押下して「Override/Implement Methods」を選択する。
- isNullメソッドを選択し、生成されたisNullメソッドをtrueを返すように変更する。
ヌルオブジェクトを成長させる
- NullLabelクラスにて[Alt + Shift + s]を押下してソースメニューを表示し、続けて[v]を押下して「Override/Implement Methods」を選択する。
- 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が必要でした(^^;