11

我有一个swiftlint令我困扰的警告。

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

然而,结构的嵌套是一种成熟的编程技术,也有不少提倡它。

编辑:确实@vadian 指出了Swift 语言指南的规则:要将一个类型嵌套在另一个类型中,请将其定义写在它支持的类型的外大括号内。类型可以根据需要嵌套到任意多的级别

我知道它与泛型的使用发生冲突,并且 Xcode 可能会变得得难以忍受。这实际上是(通过测量最慢的编译点)我开始研究这个嵌套规则的原因。

lint 规则的原因是什么,在这方面有什么好的做法?请指出技术原因,而不是纯粹基于意见的建议。

Microsoft 实际上有一个关于嵌套类型的页面,以及它们何时合适。虽然它不是针对 Swift,但它确实有一些有趣的跨语言思想。

4

1 回答 1

6

经过大量搜索,我发现的只是@jpsim 的评论,即“嵌套规则背后的想法是避免复杂的接口”。

因此,除了我的问题中概述的编译器问题最终会消退之外,这条规则似乎没有任何技术原因。

于 2017-03-28T08:37:45.990 回答