4 votes

Violation de la hiérarchie. Les types doivent être imbriqués à au plus 1 niveau de profondeur

struct Email {
    struct Contraintes {
        static let top = 20.enTantQueContrainte()
    }

    static let placeholder = "login_email"
}

entrer la description de l'image ici

Comment résoudre ce problème?

8voto

dfri Points 11222

Cette règle particulière de SwiftLint, nesting, a précédemment été discutée dans la question-réponse suivante :

Avec quelque peu de consensus que cette règle n'est pas basée sur une raison technique, mais semble plutôt être une règle de "meilleure pratique" basée sur l'opinion, notamment non suivie par exemple par les bibliothèques standard Swift (qui utilisent fréquemment des types imbriqués). De plus, le guide du langage Swift, spécifiquement la Section des types imbriqués, ne contient pas d'avertissement/recommandation contre l'imbriquement de types plus profondément que la profondeur 1.

... Les types peuvent être imbriqués à autant de niveaux que nécessaire.

Une motivation pour cette règle (basée sur l'opinion) peut être trouvée dans le problème SwiftLint 1450 :

jpsim :

La règle d'imbriquement existe pour deux raisons :

  • pour éviter les types trop imbriqués dans une API
  • pour éviter les instructions trop indentées (alias pyramide de la mort)

...

Sur la base de ce qui précède, à moins que vous ne constatiez que votre code se transforme en un spaghetti illisible de pyramide de doom (ce que je ne crois pas être le cas dans votre exemple), vous pourriez simplement envisager de désactiver la règle nesting :

// swiftlint:disable nesting

4voto

KlimczakM Points 6093

Vous pouvez créer une autre structure :

struct Email {
    let constraints = EmailConstraints()
    let placeholder = "login_email"
}

struct EmailConstraints {
    let top = 20.asConstraint()
}

Comme vous l'avez mentionné plus tard dans les commentaires, étant donné qu'il s'agit uniquement d'une erreur de linter, vous pouvez désactiver cette règle dans le fichier swiftlint.yml.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X