【问题标题】:Usage of `@Setter` from Lombok [duplicate]Lombok中`@Setter`的用法[重复]
【发布时间】:2019-10-31 10:32:49
【问题描述】:

查看和挖掘我的代码,我注意到我们通常彻底使用来自 Lombok 的 @Setter。 这让我想知道@Setter的用法。

确实,使用@Setter 比简单地通过其可见性使字段可访问更有趣吗?

据我了解,在其中一种情况下,setter 更可取(感谢Why use getters and setters/accessors?):

  • 您希望您的对象对正在设置的字段做出反应
  • 你想懒惰地计算一个字段的值
  • 你想模拟(虽然我深认为可测试性不应该主导你的代码设计)
  • 类可以被继承而设置器被覆盖

但是有些对象不符合这些情况。

在代码方面,是这样的:

@Getter
@Setter
public class Person{

  private String firstName;
  private String lastName;

}

比这更可取(在可维护性和可读性方面):

public class Person{

  public String firstName;
  public String lastName;

}

作为旁注,我想补充一点,我发现 person.firstName = "Vincent"person.setFirstName("Vincent") 更具可读性。

【问题讨论】:

  • “虽然我深深地认为可测试性不应该主导你的代码设计”。哇。
  • 您距离例如 1 步之遥时髦的
  • @Kayaman 您对此有何看法?你能详细说明一下吗?我擅长通过突变覆盖实现 100% 覆盖。但是修改你的代码只是让它可测试是乏味的,你不觉得吗?如果您有任何关于此主题的文章/资源,我很乐意阅读!
  • 您的问题似乎从根本上与使用 setter 与不使用 setter、 使用 lombok 与不使用 lombok 有关。
  • @VincentC。互联网上充满了推广可测试代码的资源,TDD 处于极端。这基本上是一个“你想要高质量的代码”的问题,而你的意见是“它不重要”。尤其是如果你不能给出为什么我们不应该编写可测试代码的论据,但我无法想象除了“让我们快点做这件事,赚钱并运行”之外的任何其他原因。

标签: java oop setter lombok


【解决方案1】:

您将封装与可见性完全混合在一起。

首先,这与龙目岛无关。 Lombok 避免使用 bolier 板代码,在这种情况下,使用 setter 方法。 Java bean 或 DTO 通常按照惯例具有 getter 和 setter 方法,lombok 在生成的类而不是 java 文件中执行此操作。

【讨论】:

  • 它是关于 Lombok 的,因为 Lombok 不允许(按设计)在你的 setter 中写任何东西,因此关于延迟初始化或对设置值的反应的观点对于这种情况是没有意义的.
  • 如果你想在你的 setter 中写一些东西,不要使用 lombok。就那么简单。它只是一个避免样板代码的帮助库。
猜你喜欢
  • 1970-01-01
  • 2020-03-02
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 2017-10-31
相关资源
最近更新 更多