はじめに
開発をしてく中でリファクタって大事だと思うのですが、人の手で修正を加えていくとしょうもないところでミスしたりします。
IDEができるところは任せてしまいたいなぁという方におすすめの小技集を紹介します。
実行環境
- IDE
- PHPStorm 2017.3.1
- マシン
- MacbookPro
- OS
- macOS High Sierra
- バージョン
- 10.13.1
- OS
- MacbookPro
1. クラス内のメソッドの命名変えたい
shortcut key
⌘ F6
説明
クラス内のメソッドを変更したい場合に使用します。
親クラスを継承した子クラスが存在して、指定したメソッドがオーバーライドしていた場合でも、子クラスのメソッドも含めて一括で変更します。
さらに、例えばシングルトンパターンを使ったりしてメソッドチェーンをしている場合でも、対象のメソッドの命名に変更を加えることが出来ます。
さらにメソッドに対して引数を追加した場合にも上のダイアログ内で、変数名、デフォルト値を設定することでメソッドの引数、参照先両方に一括で変更を加えることが出来ます。
2. 冗長な変数の利用を置き換えたい
shortcut key
⌥ ⌘ N
説明
メソッド内で変数で宣言を行ってるけど、これそのままreturn
で返した方が処理がスッキリするというメソッドに対して置換を行なってくれます。
3. 指定の値に対して定数で外出ししたい
shortcut key
⌥ ⌘ C
説明
ハードコーディングされて直接内部に書き込まれてしまっているマジックナンバーを抽出して定数で外出しします。
4. コンストラクタのメソッドから初期値、プロパティを作成したい
shortcut key
-
⌥ Enter
=> Initial Fieldsにカーソルを合わせEnter
=>⌘A
=>Enter
説明
コンストラクタ内に定義されたメソッドからクラス内にコンストラクタで定義した引数のプロパティを作成し初期状態で$this->{引数名}
の形で初期化を行ないます。
PHP 7.0以上で、引数に対してスカラー型のタイプヒンティングを行なっている場合は初期化したプロパティにdocコメントを自動で挿入してくれます。
5. staticで定義されたメソッドを別クラスに移動させたい
shortcut key
- staticメソッドにカーソルを合わせて
F6
説明
staticメソッドのクラス移動です。
表示されるダイアログ内で複数メソッドにチェックを入れれば複数のメソッドを移動させることが出来ます。
ただ、現状メソッドの移動をサポートしているのはstaticメソッドのみでインスタンスメソッドに関してはこの機能を使えません。
6. メソッドの抽出
shortcut key
⌥ ⌘ M
説明
選択されたブロックに対して、メソッドの抽出を行います。
Visibility
からアクセス権の範囲を指定が出来て、かつdocコメントを追加するかstaticメソッドにするかをチェックボックスから選択することが出来ます。
7. PHPStormのリファクタであの機能ってショートカットキーなんだったけ...
shortcut key
⌃ T
説明
最強コマンド。
メソッドや変数などにカーソルを合わせて⌃ T
を押すとドロップダウンメニューが表示されて、そのドロップダウンメニュー内のメニューから選択することが出来ます。
とりあえずこのコマンドを覚えて行ってわざわざメニュー開くのが面倒になったら各コマンドを覚えて行くでもいいかも。
まとめ
PHPStormのリファクタの機能を中心に説明して行きました。
PHPStormの標準で備わっているリファクタの機能はかなり便利で強力です。
ただ、こういう便利なリファクタツールを使ったとしても、結局どこかでツールに頼らずにリファクタする場面が出てきた時が出てきます。
その時にどういうコードがリファクタしなきゃいけないのか、どうすれば綺麗になるのかをきちんと把握した上で、こういうツールを使って作業効率を捗っていけるといいですね。
ボーイスカウト精神でまた明日も一つソースを綺麗にして行きましょう!