パルナスの魔女


パルナスの規則

  • モジュールの利用者には、そのモジュールを利用するために必要なすべての情報を与え、それ以外の情報は見せない
  • モジュールの作成者には、そのモジュールを実装するために必要なすべての情報を与え、それ以外の情報は見せない

で?

オブジェクト指向の設計原理で、カプセル化や情報隠匿の原理となるのがパルナスの規則です。
要するにモジュールなどを作る際に「そういうことされたらバグの温床になるよね」ってことを予測して、そのモジュールの利用者ができることは最低限にしましょうということです。

例えば、そのモジュールの中で会員の誕生日が特別な意味を持っていて、取得した後に変更されると他の処理で問題が起きる可能背がある場合に、Getterは作るがSetterは作らないというような設計にするような場合です。

何でもかんでもできるのは柔軟性があって、ある意味では便利なのですが、何でもできるものは壊すのも簡単なので、それが起きにくい設計にしておくことも大事なことです(Rubyは柔軟性ありすぎてそのへんが心配になる)。