「スコープ」を意識して「思いやりのあるコード」を書こう! by uhooi

iOSDC Japan 2020
レギュラートーク(20分)

「スコープ」を意識して「思いやりのあるコード」を書こう!

the_uhooi uhooi the_uhooi
7

みなさんは実装時にどの程度「スコープ」を意識していますか?
「スコープ」は直訳すると「範囲」という意味であり、本トークでは「コードにおける様々な範囲全般」を指すことにします。

例えば、自クラスのみで呼ばれているのに private 修飾子が付いていないメソッドがあるとします。
このメソッドの修正時、影響範囲を調べるために他から呼ばれていないか確認しますが、 private が付いていればその範囲を自クラスのみに絞れます。
逆に、普段からスコープを意識していると、 private が付いていないときに「このメソッドは自クラス以外から呼ばれているんだな」と推測できるようになります。

このように、スコープを意識することで実装の意図が伝わりやすくなり、可読性の高いコードが書けるようになります。
他人や明日以降の自分のためになるコードなので、私は「思いやりのあるコード」と呼んでいます。

【アジェンダ】
・アクセス修飾子( privateinternal など)の意味と付けどころ
final 修飾子の意味と付けどころ
・プライベートプロパティよりスコープを狭くする
・プライベートメソッドよりスコープを狭くする
@IBOutlet@IBAction のスコープ
・あえて最初からスコープを広げるケース

【ゴール】
・スコープを狭くすることのメリットがわかる
・アクセス修飾子や final 修飾子を適切に使える
・各修飾子を使わずにスコープを狭くできることがあるとわかる
・最初からスコープを広げることのメリットがわかる

みんなでスコープを意識した「思いやりのあるコード」を書き、優しい世界を作りましょう!