繁体   English   中英

我是否应该将我的setter方法作为“set”的前缀,如果它不仅仅是设置一个值?

[英]Should I prefix my setter method with “set” if it does something more than just setting a value?

例如,我有一个带有一些属性的简单POJO类。 我的setter正在做的更多是通知我的类中的属性更改侦听器来触发属性更改事件。 在这种情况下,他们是否是既定的? 我应该将其他名称命名或添加此评论吗? 一些示例代码:

/**
 * This is a special setter which uses property change support.
 * @param engineerOnDue engineer
 */
public void setEngineerOnDue(String engineerOnDue) {
    propertyChangeSupport.firePropertyChange("engineerOnDue", this.engineerOnDue, this.engineerOnDue = engineerOnDue);
}

这一切都取决于您希望提供给客户的API。 通常客户端不需要知道方法的实现,所以如果set-name涵盖了潮流:只需使用它。

如果您和您的团队对此感到满意,请保持原样。 我会创建两个方法,一个简单的setter,另一个设置属性(无论如何都调用setter)。 除非你不能拆分操作,因为它们必须一起发布。

POJO只是一个容器来存储没有逻辑的值吗? 也许你应该从你的用例中解雇那个事件,而不是从POJO ......

你甚至不必考虑这个setter是否应该被称为setter。

恕我直言,使用getter / setter而不是公共方法的全部意义在于允许您在更改属性时执行操作。 所以继续吧。 我甚至不会告诉客户我在那里做其他事情,这不是他的事情。
但请不要在那里耗费时间(数据库检查,网络访问):用户将有一个合理的期望让一个setter快。

除了封装之外,这也是使用JavaBeans setter的主要原因:每次属性更改时都能触发事件。 这肯定应该是一个二传手。

阅读有关JavaBeansJava教程 你要做的是在bean中定义一个bound属性

不,那仍然是一个制定者。 在公共字段上使用getter / setter方法的全部好处是,它们允许您做的不仅仅是设置字段。 它还隐藏了类的调用者的内部,允许您根据需要随时更改功能,而无需担心破坏代码的其他部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM