関数の抽出
関数の抽出リファクタリングを使用すると、グループ化できるコードフラグメントを取得し、それを別の関数に移動して、古いコードを関数呼び出しに置き換えることができます。
関数の抽出リファクタリングには次の制限があります。
リファクタリングは、自動モードの複数の出力値では機能しません。リファクタリングを適用する前にコードを変更する必要があります。たとえば、すべての出力値を含む特別なデータクラスを導入できます。
リファクタリングは、条件付きで包含メソッドから戻ってくるコードフラグメントでは機能せず、最後には配置されません。

関数の抽出リファクタリングを元に戻すには、Ctrl+Alt+N を押してインライン化リファクタリングを呼び出します。
関数を抽出する
関数に抽出するコードフラグメントを選択します。
Ctrl+Alt+M を押すか、メインメニューまたはコンテキストメニューからを選択します。
開いたダイアログで、可視性、パラメーター名、セレクターパーツ(Objective-C の場合)などの機能オプションを構成します。必要に応じて、メソッドの名前を変更することもできます。
抽出をクリックします。
コード例
前 | 後 |
|---|---|
private func setupUI() {
// ...
// This code will be extracted to a method
self.buttonLogin.layer.borderColor = UIColor.black.cgColor
self.buttonLogin.layer.borderWidth = 1.0
self.buttonLogin.setTitleColor(UIColor.black, for: .normal)
self.buttonLogin.setTitle("Login", for: .normal)
}
|
private func setupUI() {
// ...
// Extracted method's call
setupLoginButton()
}
// Extracted method
private func setupLoginButton() {
self.buttonLogin.layer.borderColor = UIColor.black.cgColor
self.buttonLogin.layer.borderWidth = 1.0
self.buttonLogin.setTitleColor(UIColor.black, for: .normal)
self.buttonLogin.setTitle("Login", for: .normal)
}
|
前 | 後 |
|---|---|
- (void)setupUI {
// ...
// This code will be extracted to a method
self.buttonLogin.layer.borderColor = [[UIColor blackColor] CGColor];
self.buttonLogin.layer.borderWidth = 1.0;
[self.buttonLogin setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.buttonLogin setTitle:@"Login" forState:UIControlStateNormal];
}
|
- (void)setupUI {
// ...
// Extracted method's call
[self setupLoginButton];
}
// Extracted method
- (void)setupLoginButton {
self.buttonLogin.layer.borderColor = [[UIColor blackColor] CGColor];
self.buttonLogin.layer.borderWidth = 1.0;
[self.buttonLogin setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.buttonLogin setTitle:@"Login" forState:UIControlStateNormal];
}
|
関連ページ:
インライン化
インライン化リファクタリングでは、メソッド、変数 (Objective-C の場合)、およびクロージャ (Swift の場合) の抽出リファクタリングを反転させることができます。インライン化するコードフラグメントにキャレットを配置します。を押すか、コンテキストメニューまたはメインメニューからを選択します。Swift 用: 開いたダイアログで、リファクタリングの実行方法を選択します。リファクタリングの結果をプレビューするには、Objective-C の場合は使用箇所の表示、Swift の場合はプレ...
インスタンス変数の導入
インスタンス変数の導入リファクタリングを使用すると、インスタンス変数に式を配置できます。リファクタリングは Objective-C でのみ使用できます。インスタンス変数の導入を実行するリファクタリングエディターで、インスタンス変数に置き換える式を選択します。を押すか、メインメニューまたはコンテキストメニューからを選択します。抽出に使用できる式がいくつかある場合は、表示されるリストから必要な式を選択してを押します。表示される候補のリストからインスタンス変数の名前を選択するか、新しいものを入力しま...