みなさんは実装時にどの程度「スコープ」を意識していますか?
「スコープ」は直訳すると「範囲」という意味であり、本トークでは「コードにおける様々な範囲全般」を指すことにします。
例えば、自クラスのみで呼ばれているのに private
修飾子が付いていないメソッドがあるとします。
このメソッドの修正時、影響範囲を調べるために他から呼ばれていないか確認しますが、 private
が付いていればその範囲を自クラスのみに絞れます。
逆に、普段からスコープを意識していると、 private
が付いていないときに「このメソッドは自クラス以外から呼ばれているんだな」と推測できるようになります。
このように、スコープを意識することで実装の意図が伝わりやすくなり、可読性の高いコードが書けるようになります。
他人や明日以降の自分のためになるコードなので、私は「思いやりのあるコード」と呼んでいます。
【アジェンダ】
・アクセス修飾子( private
や internal
など)の意味と付けどころ
・ final
修飾子の意味と付けどころ
・プライベートプロパティよりスコープを狭くする
・プライベートメソッドよりスコープを狭くする
・ @IBOutlet
と @IBAction
のスコープ
・あえて最初からスコープを広げるケース
【ゴール】
・スコープを狭くすることのメリットがわかる
・アクセス修飾子や final
修飾子を適切に使える
・各修飾子を使わずにスコープを狭くできることがあるとわかる
・最初からスコープを広げることのメリットがわかる
みんなでスコープを意識した「思いやりのあるコード」を書き、優しい世界を作りましょう!