コード補完を活用し、クロージャを素早く記述する。 #37
YusukeHosonuma
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
SwiftUI で開発する上で Xcode のコード補完機能を知らない人は居ないだろうが、中には初見では分かりづらいコード補完も存在する。
例えば、以下のような
Buttonのコードを書きたかったとする。Xcode 上で
Button(まで入力すると、(action:label:)という候補が表示されるため、これを選べば良いことが分かる。すると、以下の状態になる。
ここから最初のコードスタイルに持っていくにはどうしたらよいだろう。
そのやり方について知らない場合、以下のように愚直なコードスタイルで書いてしまいがちだ。
2022-04-29.6.50.47.mov
Xcode に慣れていないユーザのために先に説明しておくと、プレースホルダ(灰色になって入力すべき箇所)間の移動は
Tabキーで行える。Tabで順方向、Shift + Tabで逆方向への移動になる。これは SwiftUI に限らず、エディタ上にプレースホルダが存在する場合の共通動作となっている。さて、話を戻すと以下のようなコードを記述したところだった。
このコードスタイルは正しく、一切省略しない最も基本となる書き方になっている。引数ラベルの
action:とlabel:からクロージャ内に何を指定するべきか明白で、SwiftUI に慣れていないうちはこちらの書き方の方が読みやすいと感じるかもしれない。しかし、クロージャ内が何を示しているのかは、(すべてではないにしろ)コードの文脈から容易に判断できるケースが多い。
これはサンプルコードの域を出ていないが、
action:やlabel:といった引数ラベルが無くても、コードの意味は読み取れるだろう。言い換えると、以下のほうがスッキリしていて見やすいと感じる人が多いはずだ。
そう、これこそ最初に目指していたコードスタイルだ。
しかし、このコードスタイルには自分で書き直さねばならないのだろうか。もしそうだとしたら、面倒に感じてそのままで良いかと妥協してしまう人も多いのではないだろうか。
安心して欲しい。このコード形式には、以下のように最初のコード補完から行える。
2022-04-29.7.08.11.mov
やり方はコード補完の候補から雛形を入力した後、クロージャのプレースホルダにフォーカスが当たっている状態、すなわち以下のような状態で
Enterを入力するだけだ。この
Enterでシンプルなクロージャの書き方にする方法は、クロージャが要求されているプレースホルダにおいて(おそらく)常に利用できる。例えば、以下は
.sheetのクロージャを補完する例となる。2022-04-29.7.11.18.mov
こうしたテクニックは地味ではあるものの、コーディング時の時間およびストレスを削減してくれるはずだ。
ところで、途中で挙げた問に対する回答をまだ答えていなかった。
基本的には最初からシンプルなクロージャ形式で書くのが好ましいと思われるが、様々な理由からそうできないこともあるだろう。例えば、引数ラベルを確認しながらコーディングしたい場合や、既存の古いコードを改修するケースなどが考えられる。
そうしたケースにおいては、新しくコード補完で雛形を作り、必要なコードをコピペするのが最も早いだろうと私は感じている。
2022-04-29.7.22.30.mov
Discussion
コードフォーマット系のツール、例えば SwiftFormat などがこうしたコードスタイルへのフォーマットをサポートした際には、それを利用して自動的に変換するのがよいだろう。
Reference
この Effective 候補を書くことになったツイート:
https://twitter.com/tobi462/status/1515549361354129408?s=20&t=gCDR91uGJPjRjVt5RZFogw
Beta Was this translation helpful? Give feedback.
All reactions