Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 何时指定';公共';在swift中明确表示,即使它不是一个框架?_Ios_Swift_Xcode_Swift5 - Fatal编程技术网

Ios 何时指定';公共';在swift中明确表示,即使它不是一个框架?

Ios 何时指定';公共';在swift中明确表示,即使它不是一个框架?,ios,swift,xcode,swift5,Ios,Swift,Xcode,Swift5,我目前在我的主应用程序中声明我的属性,如下所示: public var thingA: String? private var thingB: String? private var thingC: String? 我是否应该省略主模块中的“public”声明,因为没有其他模块需要使用thingA。这样看起来更像: var thingA: String? private var thingB: String? private var thingC: String? 如果我们在这里省略了“pu

我目前在我的主应用程序中声明我的属性,如下所示:

public var thingA: String?
private var thingB: String?
private var thingC: String?
我是否应该省略主模块中的“public”声明,因为没有其他模块需要使用thingA。这样看起来更像:

var thingA: String?
private var thingB: String?
private var thingC: String?
如果我们在这里省略了“public”,这仅仅意味着如果它是在一个框架中,就不能再从其他地方访问它,但在主应用程序/模块中,这根本不是一个问题,因此使用public不仅没有意义,而且它的不好的做法是提供比需要更多的访问。。。(可能还有编译器相关的低效率??)


在文档或stackoverflow中,我似乎找不到任何解决此问题的方法,因此商定的标准是什么?

定义了访问控制。如果未定义特定的访问控制,则意味着它将具有允许在同一模块内访问该实体的
内部
访问控制。默认访问控制也是
internal
,如上面的链接所述,如果您使用的是单个目标应用程序,则可以省略定义特定的访问控制(即不需要
public
访问控制)


但是,我认为您应该始终从
private
access control开始,然后根据需要进行更改。

我不相信这里有类似于约定标准的东西。就我个人而言,我从未在应用程序代码中使用public关键字,因为我认为这样做没有任何意义。public应该是最受关注的属性。至少我对我拥有property observer且需要暴露于其他视图或控制器以进行设置的属性进行公开;例如,
应安装封孔
已设置封孔
,以便可以在其上运行封孔。此外,对于仅获取或与配置相关的属性。否则为private或fileprivate all。我认为这里最好的设计原则是显式地私有大多数属性,并显式地确定您的公共接口。使您的逻辑和代码更加健壮,如果不是有意的话,就不会从外部进行惰性接口。我同意先定义私有的想法,因此在实践中,在任何应该被视为“内部”的情况下,您只需忽略访问控制?我猜这种混乱是由于我们团队中的许多非常资深的工程师在多年的过程中使用了public,他们似乎真的有意指的是“内部”。。。通常来自objective-c背景。在
Swift
中,在具有单一目标的应用程序中,没有理由使用
public
open
(可能有例外)。您可以在上面的链接中检查单个目标应用程序的访问级别。