Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

「Viewに渡して保持する変数はprivateにしない」の追加 #44

Open
uhooi opened this issue Jun 30, 2022 · 2 comments
Open

Comments

@uhooi
Copy link

uhooi commented Jun 30, 2022

View にイニシャライザ経由で引数を渡し、それを保持したい場合、自動で生成されるメンバーワイズイニシャライザを使うとコードがスッキリします。

// ○
struct FooView: View {
  var foo: Int
  var bar: String

  var body: some View {
    // ...
  }
}

FooView(foo: 1, bar: "bar")

変数は外から呼ばれないので private を付けたいですが、そうするとメンバーワイズイニシャライザが生成されず、自前でイニシャライザを用意する必要があります。
ボイラープレートが冗長で読みづらくなるので、あえて private を付けないほうがいいと考えます。

// △
struct FooView: View {
  private var foo: Int
  private var bar: String

  init(foo: Int, bar: String) {
    self.foo = foo
    self.bar = bar
  }

  var body: some View {
    // ...
  }
}

FooView(foo: 1, bar: "bar")

Reference

@YusukeHosonuma
Copy link
Owner

ありがとうございます!
執筆予定でしたので、事前にそれっぽい Issue を書いていただいて助かります 🙏

P.S.
引数名が不自然と感じた場合などは、Xcode で Initializer をいつでも自動生成できるので、Initializer が欲しくなったらいつでも手に入るのですよね。

@uhooi
Copy link
Author

uhooi commented Jul 1, 2022

おお、よかったです…!
あ、確かにです、変数のリネームが簡単なのもメリットですね✨

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants