有很多关于吸气者和制定者是"邪恶的"而不是什么的讨论.
我的问题是:以下的二传手是邪恶的吗?(为了简洁起见省略了其余的课程)
int balance public void deposit(int amount) { this.balance += amount; }
这个类正在模拟ATM.在英国有一些ATM可以让你存款以及退出,因此这个对象需要一种改变其状态(余额)的方法.这个二传手是'邪恶'吗?
除了没有处理异常条件的事实外,它看起来像一个非常好的OO方法 - 它被称为它的功能,并且它可以满足您的期望.
当人们谈论吸气剂和制定者时,我不相信这就是意思,因为这不仅仅是将成员设置为给定值.
我不关心setter和getter,但主要是因为我认为我的"对象"是代码库中的高级实体.例如(IMO)在课外进行操作会"更加错误":
account.SetBalance(account.GetBalance() + depositAmount)
相反,您已在对象中实现了更高级别的功能; 你存款,让对象找出处理它的正确方法.与上面给出的getter/setter示例相比,这允许更多地集中处理异常条件.