はじめに
今回のテーマは「スコープを意識したプログラミング」です。地味なテーマですが、実はプログラミングのあらゆる場面に「スコープ」は存在します。なんとなくで指定しがちですが、「意識的にスコープをコントロール」できれば、より良いプログラミングスタイルに近づくはずです。それではスコープの巻、始まります。
スコープって何?
まず、スコープとはなんでしょうか? Wikipediaには次のように書いてあります。
プログラミングでのスコープとは、ある変数や関数が特定の名前で参照される範囲のこと。ある範囲の外に置いた変数等は、通常、その名前だけでは参照できない。このときこれらの変数はスコープ外である、「見えない」といわれる。
スコープとは変数やメソッド、クラスなどが見える範囲のことです。では「見える」とはどういうことでしょうか?
「見える」とは、それらが「プログラミング上使える」ということです。変数であれば変数名を指定して値を読み書きでき、メソッドであれば呼び出して使うことができます。
「使える」ということは、言い換えるとそれらに「依存する」ということでもあります。コードを1ヵ所書き換えたいだけなのに、数十ヵ所を修正する必要があったというような経験はありませんか? 依存していると、このように変更がほかの部分に影響を与えます。
変数やメソッドのスコープを小さくすることで、「見える範囲」が小さくなり、「使える範囲」も小さくなり、さらに「依存する範囲」も小さくできます。スコープを小さくすることで、より依存性が少なく変更が容易なプログラムを書くことができるはずです(図1)。
覚えておくことを少なくしよう!
依存が小さくなること以外にも、スコープを小さくすることで嬉しいことがあります。
プログラミングは本質的に複雑なものです。複雑さへの対策として、問題領域をなるべく小さく、理解可能な状態で扱えるようにすることが重要になります。
スコープを意識的に小さくすることで、私たちプログラマが覚えておかなければいけないこと、注意しなければいけない範囲は小さくなり、理解が容易にできるようになります。これがスコープを小さくすることの本質と言えます。
スコープを意識していますか?
それでは、いつものように、各界の代表者の方々にスコープについてコメントしてもらいましょう。
良い仕事をしたい普通のプログラマ
達人プログラマを目指す初級~中級のプログラマ
達人プログラマ
おっと、達人プログラマのキャラがさらに仙人がかってきましたが、本記事を最後まで読んでもらえば彼が言いたかったことが伝わるはずです。それでは、スコープを意識したプログラミングについて考えていきましょう。