さて、私が読んだほぼすべての場所で、ゲッター/セッターは「悪」であると読みました。さて、PHP/C# で getter/setter をよく使うプログラマーとしては、それらがどのように生きているのかわかりません。カプセル化などを破ると読んだことがありますが、ここに簡単な例を示します。
class Armor{
int armorValue;
public:
Armor();
Armor(int); //int here represents armor value
int GetArmorValue();
void SetArmorValue(int);
};
ここで、ゲッターとセッターが「悪」であるとしましょう。初期化後にメンバー変数を変更する方法を教えてください。
例:
Armor arm=Armor(128); //armor with 128 armor value
//for some reason I would like to change this armor value
arm.SetArmorValue(55); //if i do not use getters / setters how is this possible?
何らかの理由で、上記は問題ないとしましょう。ゲームで鎧の値が 1 から 500 に制限されている場合はどうなりますか。
今私の実装は
void Armor::SetArmor(int tArmValue){
if (tArmValue>=1 && tArmValue<=500)
armorValue=tArmValue;
else
armorValue=1;
}
では、ゲッター/セッターを使用せずに、他にどのようにこの制限を課すのでしょうか? ゲッター/セッターを使用せずにプロパティを変更するにはどうすればよいですか? ケース 1 では、armorValue を public メンバー変数にする必要があり、ケース 2 では getter/setter を使用する必要がありますか?
奇妙。みんなありがとう