アクセス装飾子とは?
Swiftではアクセス装飾子を利用することができます。
装飾子を使用することにより、関数やクラスにアクセス制限を設けることができ、スコープ(使用する範囲)を明確にして定義することができます。
アクセス装飾子の種類
open
- 同じモジュール内だけでなく、別のモジュールからでもアクセスが可能
- 継承またはオーバーライドができる
モジュールとは
importして読み込んで利用するFrameworkを作成するための仕組み。
public
- 同じモジュール内だけでなく、別のモジュールからでもアクセスが可能
- 継承やオーバーライドが不可能
internal
- 同じモジュール内からのみアクセスできる
fileprivate
- 同じファイル内からのアクセスのみ許可されている。
private
- 装飾子を設けたそのクラスまたは構造体の中でのみアクセス可能(extension内でもアクセス可能)
- 一番制約の厳しい装飾子
装飾子を何も付けなければinternal
の扱いとなる
装飾子をつけるメリット
- チーム開発をしてる場合は、変数や関数に
private
をつけることで、クラス内部しか利用されていないことを、明示することができるのでコードレビューをしやすくなります - 外部でアクセスできないようにすると似ている変数名を誤って呼び出すこともなくなります。
-
public
(どこからでもアクセス可能)をつけることでグローバル変数であること明示できるのでコードの読みやすさにつながります。
アクセス装飾の使い分け
アクセスレベルを特に意識しない場合
何もつけない or internal
アクセスレベルを意識する場合
-
public
・・・別のモジュールからも使えるようにしたい -
open
・・・別のモジュールからも使えて、継承やオーバーライドさせたい。 -
private
・・・実装を他からは隠したい。 -
fileprivate
・・・実装を他からは隠したいが、特定のコード間では共有したい。
参考記事