2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[3分で理解]Swiftにおけるアクセスコントロール

Posted at

最近インターン先でのレビュー時に、アクセスコントロールについての指摘を受けて、普段は雰囲気で使っていたアクセスコントロールについてしっかり学び直したいと思い記事にしました!🙋‍♂️

#目次
・アクセスコントロールとは
・アクセスレベルとは
・アクセスコントロールを使うメリット
・アクセスコントロールの使い分け方法

#アクセスコントロールとは
モジュール内の型や型の要素(メゾットやプロパティ)に対する外部からのアクセスを制限する仕組み

この説明だけだとわかりにくいので、初めはswiftでコードを書く際のclass,func,let,varなどを別のファイルやモジュールでも利用できるかを指定できるって認識があれば大丈夫です。

ios開発駆け出しの人向けに説明を捕捉すると
ファイルはコードを普段書いてある場所で下記画像上でのSignUpviewControllerなどを挿します
スクリーンショット 2020-05-08 23.40.31.png

モジュールは配布可能なプログラムの単位でimport xxの xx部分のライブラリなどがそれに当たります。(画像上のUIComponentなど)
スクリーンショット 2020-05-08 23.30.20.png

#アクセスレベルとは
アクセスコントロールする上での制限範囲を差します。大きく五つあり、公開範囲が広い順に
・open
モジュール内外の全てのアクセスを許可する

・public
モジュール内外の全てのアクセスを許可するが、モジュール外で継承したり、オーバーライドすることができない

・internal
同一モジュール内のアクセスのみを許可する(デフォルトのアクセスレベル)

・fileprivate
同一ソースファイル内のアクセスのみを許可する

・private
対象の要素が属しているスコープ内のアクセスのみを許可する

#アクセスコントロールを使うメリット
自分は基本的に大きく二つあると考えています

・コードを書く際の検索範囲を減らす
コードを書く上でアクセスコントロールなどを一切付けないとコードを書く時の検索候補が増えてしまうことがあります。
そうしたときにアクセスコントロールを使うことで余分な検索候補を減らすことができます。(変数にprivateをつけるなど)

・第三者がコードを読む上で読みやすくする
アクセスコントロールを使うことで、メゾットやプロパティなどをより明示的に書くことができて、コードの可読性が上がります

#アクセスコントロールの使い分け
基本的に
・public(別のモジュールで使いたい時

・internal(特にアクセスレベル意識しない時)

・private(他から実装を隠したい時)

の三つで使い分け、必要に応じてopen,fileprivateを使って行けばいいと思います🙆‍♂️

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?