首页编程语言阿里巴巴编程语言,阿里巴巴编程语言有哪些

阿里巴巴编程语言,阿里巴巴编程语言有哪些

cysgjjcysgjj时间2024-10-25 16:25:32分类编程语言浏览55
导读:为什么阿里巴巴Java开发手册中不允许魔法值出现在代码中?为什么阿里巴巴Java开发手册中不允许魔法值出现在代码中?因为魔法值就像魔法一样,没人能懂啊。比如我写一段程序if (var == "2" {} else if(var == "5"{}你看到这个代码能够知道 2 和5 分别代表什么意思吗……...
  1. 为什么阿里巴巴Java开发手册中不允许魔法值出现在代码中?

什么阿里巴巴Java开发手册中不允许魔法值出现在代码中?

因为魔法值就像魔法一样,没人能懂啊。

比如我写一段程序

if (var == "2"){

阿里巴巴编程语言,阿里巴巴编程语言有哪些
图片来源网络,侵删)

} else if(var == "5"{

}

你看到这个代码能够知道 2 和5 分别代表什么意思吗? 是不是很懵。

阿里巴巴编程语言,阿里巴巴编程语言有哪些
(图片来源网络,侵删)

写这样的代码,当时可能记得是什么意思,如果几个月后,后者作者离职了,

其他人再维护这样的代码,就搞不懂了。

在阅读《阿里巴巴J***a开发手册》时,发现有一条关于关于常量定义的规约,具体内容如下:

阿里巴巴编程语言,阿里巴巴编程语言有哪些
(图片来源网络,侵删)

图中的反例是将数据缓存起来,并使用魔法值加链路 id 组成 key,这就可能会出现其他开发人员在***粘贴的时候,少*** _ 的情况发生,这种错误很难去检查到,因为读取缓存不存在,可能会去数据库读取,很难察觉到。

如果在生产环境中,大量的请求进来,缓存全部失效,直接请求数据库,导致数据库连接过多,查询效率变低的问题发生,因此看来魔法值确实应该避免出现在代码中。

另外在 《Clean Code》 和 《重构》 等书中也提到了类似的问题,在代码中出现原始形态数字通常来说是坏现象,应该用命名良好的常量类隐藏它。

静态常量取代魔法值

像下面这个例子:

如果在不了解这块的业务的同事,在读到这块代码的时候,可能会想,75 是什么鬼,为啥和这个数比较,背后深藏着什么秘密吗?可能只有当时的开发人员记得了,导致代码可读性和可维护性极差。

如果声明一个常量,来替换该魔法值,可能就会使代码的可读性和可维护性大大增加。

道理很简单,阿里巴巴规模很大,员工很多,员工的流动也很频繁,试想一下一位代码中满是魔法值的老员工辞职了,让接替他的新员工怎么办?又让阿里巴巴怎么办?

作为互联网龙头企业,阿里巴巴没有那么多时间去让新员工适应老员工的代码写作风格,高效是它永恒的追求,所以才有了这么一套标准化的代码写作规范。

这个案例描述是有问题的。故障的原因不是魔法值,而是拷贝错了且没有测试。不允许魔法值只是最大限度的避免J***a编码人为因素导致的错误,但是语言调用还是可能出错。

其实大多数的开发规范都会禁止魔法值(未经预先定义的变量)的使用,因为它存在着很多的弊端。

  • 魔法值容易出错。当在代码中多次使用同样字面值时,如果出现了拼写错误,那么程序将会发生不可预料的错误,而且这种错误难以在前期发现。而如果使用变量,IDE和编译器等就可比较容易发现错误,减少像题中出现键值不相同的情况发生。
  • 魔法值难以修改维护。当我们需要修改多次出现的魔法值时,我们就要进行查找之后再修改,有时一些魔法值容易与其他代码混淆,此时修改工作就十分困难了。而预先定义的变量仅需修改一处就可以了,明显更为方便。
  • 魔法值降低代码可读性。当代码中遍布魔法值,尤其是一些魔法数字的时候,除非有详尽的注释,否则其他人很难弄清魔法值的含义,代码开发者自己也不容易记得。而使用合适的名称进行变量命名,可读性就会大大增加。

在开发中应养成良好的编码习惯,避免魔法值的使用,提高代码的正确性和可维护性。

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/21355.html

魔法代码阿里巴巴
互联网技术创意起源,互联网技术创意起源于哪里 科技创新大国实力,科技创新大国实力不足