کنترل دسترسی (Access Control)
«کنترل دسترسی (Access Control)» یعنی مشخص کنیم چه کدهایی از کجا دیده شوند. بنابراین امنیت بیشتر می شود و وابستگی ها کمتر می شوند.
سطوح دسترسی در سوئیفت
چهار سطح داریم: public، internal (پیش فرض ماژول)، fileprivate (فقط همان فایل)، و private (همان محدوده نوع/اکستنشن).
public struct APIClient {
public init() {
}
public func request() {
}
}
struct Repository {
fileprivate var cache: [String: String] = [:];
private func reset() {
cache.removeAll();
}
}
نکته: همیشه کم دسترس ترین سطح را انتخاب کن که کار راه بیفتد.
اعضا نمی توانند از نوع خود بازتر باشند
عضو یک نوع، نباید از خود نوع قابل دسترسی تر باشد. بنابراین سطح عضو باید برابر یا محدودتر باشد.
internal struct Box {
public var value: Int;
}
هشدار: مثال بالا منجر به خطا یا هشدار می شود؛ چون عضو از نوع بازتر است.
گام های عملی
- یک نوع بساز و پیش فرض
internalرا مشاهده کن. - یک ویژگی را
fileprivateکن و از فایل دیگر امتحان کن. - یک متد کمکی را
privateبگذار تا بیرون دیده نشود.
لینک های داخلی
برای سازماندهی بهتر همراه با اکستنشن ها کار کن. همچنین پس از مطالعه کنترل دسترسی، سراغ سازنده ها برو.
جمع بندی سریع
internalپیش فرض است.- اعضا از نوع بازتر نباشند.
- حداقل دسترسی لازم را بده.
fileprivateمخصوص همان فایل است.