-
ID:aZmtYq さんの質問

java programmerさんたちに質問があるです。初心者に優しく答えてくれなさい。

あるクラスに存在するPrivate変数にアクセスするために
setter/getterを使ってその値をセット・ゲットできるのが定石なのですが
(ここまでは理解した)

publicでよくない?なんでここまで面倒にしたの?(座標系のインプリメントがそもそものきっかけじゃないかという記事までは目にした)
Privateにしたい変数はわかる、それを参照(get)したいのは分かる、
でも、セットできたらもうPublicジャン、実質それ!って思うのです。

初心者なので腹を立てずに懇切丁寧に教えてくれないと頭がパーンするので
優しくしてあげてください。

みんなの回答 2 件

ID:e5vtqC さんの回答

setterメソッドを通すことでプライベート変数に入れる値を加工してから入れることが出来たり、不正な値が引数に渡されてきてないか検証してから入れることが出来るんだよ。

ID:e5vtqC

ちなみになんでもかんでもgetter、setterを実装するのではなくて、読み取り専用で良いならsetterは実装しないでok。書き込みもするならsetterを実装して書き込まれる値が変な値じゃないかを確認した上で書き込ませるとかするんだよ。

ID:e5vtqC

あ、iOSとJavacriptプログラマーのくせに出しゃばりました。。。

ID:e5vtqC

getterも必要ないなら実装しないでオッケー。「求めるな、命じよ getter」でググって関連記事を幾つか読んでみると良いかも。

ID:aZmtYq

あーでも、PrivateにしておいてSetterでチェックって考えはわかります。そう考えるとチェッカーメソッドの用意や、その他、別の手段が考えられるのでこれがすべてだ!って感じじゃない感はありますが、一理ありますね。iOSだとobjective-cだと思うのですがその辺の差異やコンセプトの違いはありますか?

実はこの話の元は「setter/getterという古い考え方と実装」という一文をWebで見て思いついた事なので、自身では深くは考えてなくて(また、既に記したとおりまだまだ超のつく初心者なので)これからも色々考えてゆこうと思っております。

ご意見ありがとうございました!

ID:JPZH.4

同じコメ主だけど英語わかるなら以下のQ&A記事がsetter&getterを利用するメリットについてまとまっていて有益だよ。
stackoverflow.com/questions/1568091/why-use-getters-and-setters

ID:aZmtYq

ちょっと眺めてみましたがこれが目からうろこってやつでしたね
「Getters and setters can allow different access levels - for example the get may be public, but the set could be protected.」こういう使い方にはモッテコイですね!

ID:e5vtqC

うっせー、バーカ。ちょっと眺めんじゃなくてちゃんと読めや。
っと、最後はご期待通り、荒ぶったコメで終わらしときますねw ここはw3qなんだぜ?わかるよな?

ID:aZmtYq

ここわこわいインターネッツですね。
不良が来たかと思ってびっくりしました(>_<)
名誉棄損で運営に泣きつきます!!

それはさておき再勉強してます。いややっぱり色々この件に関しては論議が尽きないみたいですね。privateにした変数をpublicなセッターで変更するロジックだと別の個所から書き換えられるとか云々。ここまで考えてコーディングするのは大変です。ほんとイントロを教えてくださってありがとよ。
死ね死ね死んでしまえ。

ID:Nlsf0w さんの回答

良スレかよwww

ID:aZmtYq

あれから色々調べてみたんですが相当な人が持論をお持ちなようで、なかなか自身のスタイルなんて決められるもんじゃないですがやっぱりgetter/setterスタイルのコーディング云々に疑問を持ってる人がいるみたいですね。ホントてめぇらの知識には頭を下げてあげてもいいです。

最終更新日:2016-08-11 (1,523 views)

関連するトピックス

ページ上部に戻る