开发者社区> 问答> 正文

[@徐雷frank][¥20]一个关于类get set器的编码规范问题

已解决

第一种 成员变量public
/**

  • java类型
  • @author zhangpeng01
    */

public class JavaType {

/**
 * 是否基元类型
 */
public boolean isPrimitive;
/**
 * 是否数组
 */
public boolean isArray;

}
第二种 get set器
/**

  • java类型
  • @author zhangpeng01
    */

public class JavaType {

/**
 * 是否基元类型
 */
private boolean isPrimitive;
/**
 * 是否数组
 */
private boolean isArray;

public boolean isPrimitive() {
    return isPrimitive;
}

public void setPrimitive(boolean primitive) {
    isPrimitive = primitive;
}

public boolean isArray() {
    return isArray;
}

public void setArray(boolean array) {
    isArray = array;
}

}
第三种 lombok.Data;
/**

  • java类型
  • @author zhangpeng01
    */

@Data
public class JavaType {

/**
 * 是否基元类型
 */
private boolean isPrimitive;
/**
 * 是否数组
 */
private boolean isArray;

}
这三种我都使用过,目前更倾向使用lombok.Data;

第二种方式get set器, 我从第一次接触java语言就有疑问为什么需要get set器?我翻遍《阿里巴巴Java编程规范》相关描述是get set 不要添加额外逻辑,就是只做返回值和赋值。
没有提到get set 器 和public 成员变量有何意义!

国内外众说纷纭,公说公有理,婆说婆有理。引发十几二十年的论战。
背景资料交代完毕,我整理一下问题如下
1.三种方式的利弊分别是什么?2.我该如何运用三种方式?3.第三种 lombok.Data;是可以长期使用下去吗?

展开
收起
鬼域马 2018-11-23 15:42:05 2371 0
1 条回答
写回答
取消 提交回答
  • 1.阿里云大学讲师,主讲《微服务Spring Cloud设计与开发实战》《MongoDB高级实战》等课程 2.MongoDB中文社区专家 3.《MongoDB实战》第2版译者 5.吉林大学计算机科学学士、上海交通大学硕士
    采纳回答

    1、直接public成员变量模式,现在很少用,主要是对于内部数据没有任何验证和保护措施。
    2、getter和setter访问器模式使用比较多,这个也是传统的方式。访问器可以封装特定的代码,添加安全验证和检查的逻辑,对内部成员变量提供保护。这里《阿里巴巴Java开发手册》16条关于getter和setter访问器的描述,应该指的是业务逻辑代码,后面有例子你可以看看。
    3、 lombok.Data更简单,说白了是语法糖,通过使用注解,帮助我们对于POJO类型的私有成员自动生成getter和setter访问器和构造函数代码,当然这样简洁,方便。如果版本允许,可以考虑第三种方式,实在不行选择第二种模式。

    2019-07-17 23:16:15
    赞同 1 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载