有一次小明传数据给我,把我弄哭了

简介: 某天小明处理的一些数据需要传给我这边处理,于是小明在我们的传输媒介上面新增了一个 Map 用于保存这些数据,数据结构如下:

某天小明处理的一些数据需要传给我这边处理,于是小明在我们的传输媒介上面新增了一个 Map 用于保存这些数据,数据结构如下:


public class Record {
  private final Map<String, String> extData = new HashMap<>();
  public void setData(String key, String data) {
    extData.put(key, data);
  }
  public String getData(String key) {
    return extData.get(key);
  }
}


在小明猛如虎的一顿操作之下,告诉我数据已经放在 Record#extData 中了,自己调方法拿就好了,Map 的 Key 值就是 xxx 中的某个值,我一听懵了,我去哪找这个 Key 啊,得多费劲啊,都把我弄哭了。


于是,小明看出了我心里的憋屈,在项目的常量类中将相关的 Key 写成了常量的形式:


public class Constants {
  public static final String KEY_1 = "key1";
  public static final String KEY_2 = "key2";
  public static final String KEY_3 = "key3";
}


于是我又得去找这个常量类中相关的 Key,但是相比之前,情况已经好很多了,把 Key 限定在了某个常量类中的某几个常量中。


但问题来了,只有我和小明知道我们之间的约定,那么如果有另外一个人去获取小明的 extData 数据呢?是不是又得问小明一遍?那小明得多忙啊?而且有些人就懒得问了,直接凭着自己的理解,传一个自己“参悟”得到的 Key 来获取 extData,这时很可能就跟小明给的不一样,导致数据获取不了。


于是小明特地为 extData 这个 Map 的 Key 定义了一个枚举,将 Key 定义到这个枚举上面:


public enum KeyEnum {
  KEY_1,
  KEY_2,
  KEY_3
}


接着在 getter、setter 方法上面将 Key 的类型改成 Key 的枚举类型,在将 extData 的 Map 类型改成 EnumMap :


public class Record {
  private final Map<KeyEnum, String> extData = new EnumMap<>(KeyEnum.class);
  public void setData(KeyEnum keyEnum, String data) {
    extData.put(keyEnum, data);
  }
  public String getData(KeyEnum keyEnum) {
    return extData.get(keyEnum);
  }
}


据说,小明改完之后,终于没人再来打扰他安静写代码了!


以上的问题看着很简单,但是很多开发人员都干过类似的事:我写的代码你猜对了算我输,爽了自己,让别人去猜吧。


比如某个业务中的一个数组,数组下标对应一些跟业务相关的值,最好的做法就是创建一个下标值的枚举或者常量,然后根据枚举或者常量去获取,不然你在项目中直接写个需要,天知道你这个序号代表的是个啥意思啊!


很多人不太关注如何给项目定义常量、枚举这些东西,认为写多一个类多麻烦啊,导致项目中满天飞的字符串,维护起来特别费劲,而且还要经常猜作者的意思,还容易出错!


我们都应该要养成良好的编码习惯,学会如何优雅地写代码,常量枚举大胆用起来!

相关文章
|
程序员 开发工具 开发者
以为是使用电脑的老手,没想到吃了没备份数据的亏。
以为是使用电脑的老手,没想到吃了没备份数据的亏。
|
Cloud Native
【刷题日记】1037. 有效的回旋镖
本次刷题日记的第 58 篇,力扣题为:1037. 有效的回旋镖,简单
【刷题日记】1037. 有效的回旋镖
|
SQL 缓存 Java
在项目中随手把haseMap改成了currenHaseMap差点被公司给开除了。
在项目中随手把haseMap改成了currenHaseMap差点被公司给开除了。
145 0
|
存储 索引 容器
0.2秒居然复制了100G文件? 我给同事讲了一个小时,他感动得快哭了...
0.2秒居然复制了100G文件? 我给同事讲了一个小时,他感动得快哭了...
0.2秒居然复制了100G文件? 我给同事讲了一个小时,他感动得快哭了...
程序人生 - 996(四)评文之马云再谈“996”:和被剥削没关系,现在的人不傻
程序人生 - 996(四)评文之马云再谈“996”:和被剥削没关系,现在的人不傻
118 0
|
IDE Java 程序员
疯了!同事又问我为什么不能用 isXXX
最近在做Code Review,写下了这篇文章:代码写成这样,老夫无可奈何!,说多了都是泪啊。。
|
程序员
程序员好心帮应届生改代码后,结果扎心了!
近日,一名程序员在互联网社区的吐槽:公司一个应届毕业生,领导安排和我一起做项目,提交的代码有许多不合适的地方,我在没有和他提前沟通的情况下做了部分重构,结果直接喷我,让我不要改他的代码,老哥们,遇到过这种情况吗?对此,网友是如此评论的: 直接说让他自己改,改之前你应该先说,不过应届生也敢喷你,不是后台强,就是情商低;千万别自己改,你应该给他说怎么改,然他自己改,我就是应届生,我领导就这样做的。
1060 0
|
Java 程序员 应用服务中间件
程序员相亲失败,只因请对方吃肯德基而被嫌弃,最后被怒删
今天看到一个有趣的话题,一个粉丝投稿: “我是程序员,今天相亲时被对方嫌弃了,最后她删了我”。 楼主男生,第一次见面时请对方吃肯德基,女生吐槽了他很多,最后删了他···看看他俩的聊天记录,你们品品。
984 0