Code Review - eldaroid/iOSWiki GitHub Wiki

  1. Вместо использования Spacer().frame(height: 15) лучше использовать VStack с Spacing или .padding(EdgeInsets(top: 10, leading: 5, bottom: 10, trailing: 5)) и задавать любые значения. .padding(.bottom, 100) - отступ снизу в 100 пикселей. Или .padding([.leading, .vertical], 20)

  2. Также, вместо использования .offset(x: 20) лучше использовать padding(.horizontal, 20). Потому что offset сдвигает layer (представление, а не frame) и ты можешь кликать на button, но никакого действия не будет происходить, потому что сам frame находится не там, где само представление.

  3. @State вставлять во все то, что изменяется.

  4. Атомарность текста

Было: Text(viewModel.showWarning ? AssessmentStrings.totalAssessmentCommentWarning : "")

Сообщение лучше вынести в отдельный var, что бы поддержать атомарность, например

var warning: String {
 viewModel.showWarning ? AssessmentStrings.totalAssessmentCommentWarning : ""
}
  1. some View

Вместо использования func() -> some View:

extension View {
    public func eraseToAnyView() -> AnyView {
        AnyView(self)
    }
}

private func printText() -> some View {
    return Text("text").eraseToAnyView()
}

Нужно использовать: var: some View с @ViewBuilder, который позволит избавиться от erase'ов

@ViewBuilder
private var printText: some View {
     Text("text")
}