この記事では、コードの構造を改善し、クリーンにするコードのリファクタリングに役立つXcodeの機能をいくつかご紹介します
- 変数の名前を変更する
- プログラム関数に抽出する
- if 条件を変数に抽出する
- 複数の if 文を switch に変換する
- ローカライゼーション機能を文字列に手早く適応させる
- クラスにinit関数を作成する
- 有用なコードをスニペットに追加・表示・バックアップする
- 関数のドキュメントを作成・表示する
- 変更を破棄する(最新のgitコミットと比較して)
- 特定のコードに対して最後に変更を加えた編集者を検索する
- 関数がコールされる場所をすべて見つける
- コードのさまざまなセクションを折りたたむ
- プログラムヘッダーを手早く検索する (func, class, struct)
- その他の Xcode に関するヒント(キーボード・ショートカット)
変数の名前を変更する
変数名をすばやく変更することができます。Xcodeは変数を参照するすべてのコードを見つけることができます。
まず、変数をダブルクリックして選択し、変数を右クリックします。 Refactor
メニューをクリックして、オプションの Rename...
をクリックします。
(変数名ではなく変数の参照に基づき)変数のすべてのメンションを検索・表示します。
新しい変数名を入力し、Rename
ボタンをクリックしてください。
プログラム関数に抽出する
コードの一部を、別の関数として抽出することができます。そのためには、Refactor
メニューのExtract to method
オプションをクリックしてください。
if 条件を変数に抽出する
1つのif条件に対して長いコードが書かれているとき、それをbool変数として抽出することができます。
そのためには、コードの当該箇所を選択してから、Refactor
メニューの Extract to variable
オプションを使ってください。
複数の if 文を switch に変換する
enum
をご利用で、複数の if 文を使用される場合は、Refactor
メニューの Convert to switch statement
オプションを使用してコードを手早く変換し、switch
ステートメントを使用することができます。
ローカライゼーション機能を文字列に手早く適応させる
文字列につき毎回 NSLocalizedString
を手入力する必要はありません。
対象の文字列を選択し、右クリックして Refactor
メニューの Wrap in NSLocalizedString
オプションを使用することができます。
class
クラスに init
関数を作成する
struct
構造体を使っているときは、init
は自動的に生成されます。
しかし、クラスを使っているときには、自分でinit関数を作成しなければなりません。
Generate Memberwise Initializer
オプションを使ってinit関数を自動生成することができます。
クラス名を選択し、Refactor
メニュー内にある Generate Memberwise Initializer
を使えばそのようなことが可能です。
有用なコードをスニペットに追加する
頻繁に使用するコードがある場合があります。プレースホルダーを追加して、そのコードをスニペットに追加できます。
コードの中にプレースホルダーを入れるには、<# comment #>
と入力します。
次に、保存したいコードをすべて選択し、右クリックして Create Code Snippet
オプションを選択します。タイトルと概要を入力し、右下の Done
ボタンをクリックします。
保存されたコードスニペットは、Xcodeウィンドウの右上隅のプラスアイコンをクリックしてすべて確認できます。
コードスニペットは、Xcodeに保存されます。
そのため、別のプロジェクトを開いていたとしても、すべてのコードスニペットが表示されます。
コードスニペットは ~/Library/Developer/Xcode/UserData/CodeSnippets/
に保存されます。
関数のドキュメントを作成する
Xcodeは、関数ドキュメントのテンプレートを作成することができます(全てのパラメータ名を含む)。
作成するには関数名を右クリックし、 Show Code Actions
オプションを選択します。次に、Add Documentation
をクリックします。
キーボード・ショートカット:option
command
/
コードアクションメニュー
command
キーを押したまま関数名をクリックすると、コードアクションメニューを表示することができます。
コードアクションメニューについて言えば、関数の定義にジャンプしたいときにとても便利です
(コードアクションメニューの Jump to definition
ボタンをクリックします)。
関数のドキュメントを表示する
関数のドキュメントを作成するメリットは、場所を問わず、すぐに見ることができることです。
キーボードの option
キーを押しながら、関数名をクリックすると(マウスポインタが疑問符になります)、関数のドキュメントが表示されます。
変更を破棄する(最新のgitコミットと比較して)
コードに変更を加えると、コードの左側に青い縦線が表示されます。
青い線をクリックし、Discard changes
オプションをクリックすると、行った変更を破棄することができます。
この操作では、青い線で覆われている変更部分が全て削除されますのでご注意ください。
特定のコードに対して最後に変更を加えた編集者を検索する
行を右クリックして Show last change for line
をクリックすると、現在の行に誰が変更を加えたかを確認できます。
関数がコールされる場所をすべて見つける
特定の関数が呼び出されているすべての箇所を検索することができます。
そのためには、関数名を右クリックし、Find
メニューを選択して、Find call hierarchy
オプションをクリックしてください。
これはシステムフレームワークの関数に対しても同様に機能します。
コードのさまざまなセクションを折りたたむ
多くの関数を含んでいるファイルがある場合、ファイルを折りたたむことができます。
初めに、Xcode設定の Text Editing
セクションで、Code folding ribbon
オプションを有効にしてください。
すると、コードエディタの左端にある垂直インジケータをクリックすることにより、関数を折りたたんだり表示したりすることができるようになります。
プログラムヘッダーを手早く検索する
command
shift
o
のキーを押すして、機能あるいはクラスネームを検索できます。
この操作でファイルの内容を検索することはできません。
その他の Xcode に関するヒント(キーボード・ショートカット)
ショートカット | 機能 |
---|---|
command -
|
フォントサイズが小さくなります |
command +
|
フォントサイズが大きくなります |
command I
|
自動的にコードのインデントを調整する |
command B
|
コードをビルドする |
command R
|
コードを実行する |
control command R
|
再度ビルドすることなくコードを実行するには (最後にコンパイルされビルドを実行します)。 |
shift command L
|
使用可能なすべてのライブラリおよびコードコンポーネントのリストを表示することができます。 |
option command /
|
関数のドキュメントを作成する |
control 6
|
現在のファイルに含まれるアイテムのリストを表示する |
command L
|
特定の行に移動する |
control option command F
|
すべてのコード修正案を適用することができます。 |
control shift command M
|
ミニマップの表示・非表示。ミニマップにマウスオーバーすると、アイテム間をすばやく移動できます。 |
option shift command return
|
コード変更を見る (git) |
-
Control
キーとShift
キーを押しながら、さまざまな場所をクリックすると、複数のマウスカーソルを置くことができます。次に、キーを放すとて、選択したすべての場所に入力することができます。 - 現在の作業ディレクトリにあるXcodeプロジェクトを素早く開きたい場合は、
xed .
をMacターミナルに入力することができます。
Xcodeに関する私のQiita記事
-
私が書いた以前の記事の1つで、さまざまなタイプのコードコメントを使用してコードの異なるセクションをマークする方法についても説明しました。
https://qiita.com/MaShunzhe/items/00dbe277d158172fdfc2 -
また、Xcodeを設定してデバイスにリモート接続することもできるため、アプリケーションのテスト中にワイヤレス充電を使用することができます。
https://qiita.com/MaShunzhe/items/e553cbc68c891eee0d9a -
特定の条件に一致した場合 (特別なブレークポイント) には、プログラムを停止するためだけにデバッガーを使用することもできます。
https://qiita.com/MaShunzhe/items/b98d504b9ee6ddbd26b6 -
Xcodeビュー要素ライブラリを介して、作成されたSwiftUIビューコンポーネントに簡単にアクセスできます
https://qiita.com/MaShunzhe/items/47f5041528b57127f669 -
Xcode 12 でのアプリ内購入のテスト
https://qiita.com/MaShunzhe/items/486f45ba39433ce10d8a -
Xcodeシミュレーター管理コマンド
https://qiita.com/MaShunzhe/items/14d95bb27eb3d51c4233 -
iOSアプリのローカライズとローカリゼーションのデバッグ - 開発言語の変更、ストーリーボードと文字列のローカライズ、ローカライズされていない文字列の特定とデバッグ
https://qiita.com/MaShunzhe/items/86200a5c03817497ac29
この記事が参考になり、Xcodeをより生産的に活用いただけるようであれば幸いです。
私の公開されているQiita記事をカテゴリー別にご覧いただけます。
今後ともよろしくお願い致します。