getter和setters的设计很差吗?自相矛盾的意见目前,我正在用几种不同的模式在Java中开发一个简单的游戏。我扩展了一个主游戏类,将主逻辑放在其他类中。尽管如此,主要的游戏类仍然相当庞大。在快速查看我的代码之后,大部分代码是getter和Setters(60%),而其他代码则是游戏逻辑真正需要的。一些Google搜索声称getter和Setters是邪恶的,而其他的则声称它们对于良好的OO实践和伟大的程序是必要的。那我该怎么办?应该是哪一个?我是应该为我的私有变量更改getter和Setter,还是应该继续使用它们?
4 回答

aluckdog
TA贡献1847条经验 获得超7个赞
// Gameprivate int score;public void setScore(int score) { this.score = score; }public int getScore() { return score; } // Usagegame.setScore(game.getScore() + ENEMY_DESTROYED_SCORE);
// Gameprivate int score;public int getScore() { return score; }public void addScore(int delta) { score += delta; } // Usagegame.addScore(ENEMY_DESTROYED_SCORE);
private boolean alive = true;public boolean isAlive() { return alive; }public void kill() { alive = false; }
private int hp; // Set in constructor.public boolean isAlive() { return hp > 0; } // Same method signature.public void kill() { hp = 0; } // Same method signature.public void damage(int damage) { hp -= damage; }

12345678_0001
TA贡献1802条经验 获得超5个赞
非常邪恶:公共领域。 有点邪恶:getter和setter在不需要的地方。 很好:getter和setter只有在它们真正需要的地方才会出现-使类型暴露“更大”的行为,而这种行为发生在 使用
它的状态,而不仅仅是将类型视为要被其他类型操作的状态存储库。
添加回答
举报
0/150
提交
取消