https://qiita.com/Yahagi_pg/items/1bf59fc75d7f17c3b731
こちらの記事が参考になり、getterをやめるべきについては
改善例を理解しました。
int totalPrice = book.getPrice() * quantity;
↓
int totalPrice = book.calculateTotal(quantity);
ではsetterについてはどのように改善できるのでしょうか?
bookのpriceを500に変更したい場合、やはりsetterを実装する事になるかと考えております。
教えていただけると助かります。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
こんにちは。
getterやsetterを乱発したくなる時は、設計が甘い時が多いと思います。
きちんとそのクラスの役割を明確に設計していれば、内部の実装を外部に公開するようなgetterやsetterを乱発することがありえないのです。
つまりちゃんと設計しましょうということであり、getter,setterを止めましょうという主旨ではありません。ちゃんと設計した結果getter, setterを使うべきと判断したところにまで使うなという話ではないです。
GUIフレームワークのウィンドウ・クラスはTop, left, Width, Heightなどはgetter, setterを持ちますし、それは妥当な設計と思います。
投稿2018/03/28 15:33
総合スコア23272
0
コンストラクタで値段を指定するのが自然だと思います。
Java
1class Book { 2 private final int price; 3 4 Book(int price) { 5 this.price = price; 6 } 7}
**『後から値段を変更できる』というのがそもそも間違いではないか?**とまず考えた方が良いです。
ただし、値段が変わることが妥当な場合もあります。
その場合はセッターやそれに準ずるものを使うしかないですが、意味合いがあると良いですね。
単に新しい値段をセットするのではなく、『何割引き』か指定するとか。
これはご提示のリンク先の記述にも沿いますね。
A. オブジェクトをデータの入れ物として扱うのではなく、そのデータの加工を任せる
投稿2018/03/28 13:48
総合スコア35660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/28 17:23
2018/03/30 14:58
2018/03/30 15:01
2018/04/01 05:58 編集
0
最後まで読みましたか?
この場合はやはり getPrice() があった方がいいという結論になっています。
とにかく何も考えずゲッターセッターを作れと言う入門書への批判でとにかくゲッターセッターは作るなという記事ではありません。
仕様をちゃんと考えようねという記事です。
投稿2018/03/28 23:34
総合スコア28660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/28 23:59 編集
2018/03/29 00:08
2018/03/30 15:10
2018/03/30 22:24
2018/03/30 22:27
2018/03/30 22:39
2018/03/30 22:50
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/30 14:59