2017-03-24 6 views
5

私にはswiftlintという警告があります。スウィフトのネストされたタイプ - 良い習慣は何ですか?

warning: Nesting Violation: Types should be nested at most 1 level deep (nesting)

しかし、構造体のネストは、それは、確立されたプログラミング技術であり、quite少数people advocate

編集:Swift language guideのルールアウト 実際@vadianポイント:ネストするには、別のタイプの中の種類、それがサポートするタイプの外括弧内にその定義を書きます。 タイプは、必要な数のレベルにネストすることができます

は、私はそれgenericsを用いたclashes、とXcodeがたまらなくslowになる可能性があることに注意しています。実際には(measuringから最も遅いコンパイル・スポットを介して)私がこの入れ子ルールを見始めた理由がありました。

リントルールの理由は何ですか?また、その点でどのような良い方法がありますか?純粋に意見に基づくアドバイスではなく、技術的な理由を指摘してください。

マイクロソフトは実際にpage about nested typesを持っていて、適切な場合はそれらを使用します。それはSwiftをターゲットにしていませんが、いくつかの面白いトランス言語の思考があります。

+2

私はswiftlintに精通していませんが、AppleはSwift言語ガイドで実際に言います:[別の型の中に型を入れ子にするには、それがサポートする型の外側の中括弧内にその定義を書きます。 **タイプは必要なだけ多くのレベルにネストできます。**](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/NestedTypes.html#//apple_ref/doc/ uid/TP40014097-CH23-ID242) – vadian

+1

'String.CharacterView.Index'はSwift標準ライブラリで使用されています。 –

+0

@MartinR真実なのですが、それはまさに私が「確立された技術」であり、なぜ「この糸くずれルールの理由は何か」という質問をしていると述べた理由です。確かに人々は正当な理由なしに糸くずの規則を作っていないのですか? – Kheldar

答えて

1

私が見つけたのは、「入れ子のルールの背後にあるアイデアは、複雑なインターフェイスを避けることです」というのが@jpsim's remarkでした。

したがって、私の質問で概説したコンパイラの問題を除いて、最終的には治まるでしょうが、ではなく、のようなものです。

関連する問題