へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

なんでアクセスメソッドを作らなきゃいけないのか簡単に説明してみる。

 private int x = 1;

 

public void setX(int x) {

    this.x = x;

}

 これ。

「なんでいちいちアクセスメソッドを作らなきゃいけないの」ってなる。

 public int x = 1;

 こうしておけば、

インスタンス作ったときに、すぐに呼び出せる。

Test test = new Test();

test.x = 2;

 って書けば変えられる。

なのにどうして、無駄にsetXメソッドを作るの?って感じ。

Test test = new Test();

test.setX(2);

いちいちこれするの、めんどくさい。

 

でも、やらなきゃいけない。

なんでか?

 

確かに、小さな小さなプロジェクトでは必要ないかもしれない。

でも、プロジェクトが大きくなればなるほど、何かのはずみで間違えて変数をいじってしまうことがある。

それはやっぱり防がれなければいけない。

 

でも、こう書いても、多分実感は出来ないと思うから、

現実世界での具体的な例をあげてみる。

publicでの宣言はこんなかんじ

まんじゅうがあります。 

privateでの宣言はこんなかんじ

お客様にお出しするまんじゅうがあります。 

 

publicは誰でもかまえる。

先輩が緊急でまんじゅうを必要としている! お、こんなところにまんじゅうあるじゃん! いただき! 

 となる。

privateでは

先輩が緊急でまんじゅうを必要としている! お、こんなところにまんじゅうあるじゃん! いただ… 

『それはお客様にお出しするものだよ! 所定の手続き(プロシージャ)踏んでね!』

 となる。

確かに その場では先輩にまんじゅう出しておっわりーな感じでいいけど、

お客さんが来たときにまんじゅうがなくなったり、変わってたりすると困る。

大事な取引先の○○さん用に用意しておいたまんじゅうが、ジャガイモに変わっていた!

 「へーこの会社ではジャガイモを出すのか」となってしまう。

以降その会社は、「お茶菓子にジャガイモを出す会社」のようなノリで扱われる。

これが後々の不具合に繋がる。(ちなみに本人はジャガイモをお茶菓子として出している自覚がない)

また、

大事な取引先の、そばアレルギーの○○さん用に用意していたまんじゅうが、ざるそばに変わっていた! 

 この場合は深刻なエラーを吐き出す。

 

プログラミングの世界は、何かと制限が多い。

「これしちゃダメ!」「あれしちゃダメ!」と。

「なんでだよやっても問題ないだろ」と思うことも数多あるが、

それは、先人の知恵によって敢えて制限がかけられたものなので、

深く考え過ぎないようにするべきだと思う。

 

ちなみにJavaScriptではアクセス制御しないらしい。(伝聞)