JAVA静态变量的使用

很多的地方建议把一个一个不变的变量使用static表明,然后所有的变量字母都是用大写来表示。

这样的优点

  1.     是在读代码的时候我们知道这个字母代表什么,
  2.     当这个字母变化的时候,我们只需要修改一个地方就可以修改所有地方了
public static String GENDER_MAN = "M".

if (GENDER_MAN.equals(gender)){
 ...
}

大量的这种变量存在于代码里面,我们看到其实也是符合代码规范的。但是有一次写代码的时候就是觉得这样的代码不“美”。但是也不知道什么原因。而且不愿意写出大量的static代码。

(有的人可以用枚举来代替,个人觉得用枚举是比静态变量更好,但是实质上并没有改变,也已经进步不小了。)

后来自己思索以后进行了如下的重构。

public boolean isGenderMan(gender){
    return "M".equals(gender)
}

然后进行code review的时候大家开始表示,你这怎么行。M出现在代码里面的,hard code啊。好吧,我们来看看到底哪种写法更好。更加符合之前说的设计模式原则。

使用static 的好处有两个。上面已经说了。那么我们来看一下,这样写代码是不是已经有原来的优点了。

  1. 通过方法名字,我们可以看出M代表男性。而且M不对外开放。别的地方不能使用M。
  2. 如果以后M变成其他的字母的话,也只需要修改一个地方。 

那么我们看看这么写还有没有其他的好处,如果以后m也代表男性。之前的代码怎么办。我们需要在代码的每一处做出如下修改。

public static String GENDER_MAN = "M".
public static String GENDER_MAN1 = "m".

if (GENDER_MAN.equals(gender) || GENDER_MAN1 .equals(gender)){
 ...
}
那么第二种方式,只需要修改一个地方就可以了。这样其实更负责“开闭原则”。但是“守旧的人还是会指责你,M m是硬编码。”

public boolean isGenderMan(gender){
    return "M".equals(gender) || "m".equals(gender)
}

还有没有其他的优点,就是我觉得这样的代码更“美”。为什么美,我也说不出来。我就是觉得这样漂亮,比代码里面一堆常常的静态变量好看的多。

有的人说了,我们系统就是不会变,我们的性别只需要使用M,你这是在强词夺理。我觉得吧,对修改开发是一个大的原则,我们在code的时候需要考虑进去。但是需要做个平衡,也不是一味的说所有都要去修改,需要看代价。代价大了就没有必要了。如果只是把静态变量修改成方法的话,其实这样修改代码量不大。而且更负责“开闭原则”。

静态变量应该使用在什么地方呢?更加推荐表示一些真正不变的东西,比如说π,空字符串我觉得也可以使用(当然代码里面出现“”完全没有问题。)。或者使用jdk里面的一些东西。

其实写代码并没有什么大的规则,遵循你的“道”就是好的。对于前人的经验理解后再去使用。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值