假设我有一个名为House
的课程,其中包含两个字段
name
address
这些领域中的每一个都有一个吸气剂和一个设定者。
现在我想在名为House
的{{1}}类中使用另一种方法。此方法应使用不同类型的传递对象设置具有属性的字段。
如何创建此方法有两种方法。第一种方式:
setValues
或第二个选项:
private void setHouse(HouseTransfer transer){
name = transfer.getName();
address = transfer.getAddress();
}
哪一个更“最佳实践”?
答案 0 :(得分:3)
在一定程度的粒度下,软件设计比黑白绝对更为主观。我不相信这里有绝对“最佳做法”。
话虽如此,我个人会使用第二种形式。使用setter方法的基本思想是,在某些时候,您可能需要一些特殊的逻辑来设置该值(例如格式化输入,卫生,验证等)。因此,最有意义的是始终依赖于任何此类逻辑位于一个中心位置,而不是在设置此变量的任何位置分散在整个代码中。
如果你有一个非常简单的例子,其中setter只是设置值并且完全知道不会添加其他逻辑,那么你当然可以使用第一种形式来简化。把它放在第二种形式没有真正的性能上,所以我个人只会使用它。
答案 1 :(得分:2)
我会在setHouse
方法中使用个别的getter / setter(这是你的第二个选择)。
您拥有setter这一事实表明该操作涉及某种封装。不是重写代码来强制执行封装,而是重用已有的代码。
答案 2 :(得分:1)
Jon's answer to that question(取自另一个关于使用getter / setter的问题,这个问题与此不重复)
你并不总是需要getter / setter,但是如果你有一些,通常有一个很好的理由为什么你实现了它们,在这种情况下:使用它们。
答案 3 :(得分:0)
也许如果您正在设置两个不同的地方,您可能会考虑将您的getter和setter分解为一个通用接口。这可以使以后的自定义更容易,对吧?