java为什么无法运行?
您需要将问题描述的清楚一些。
要运行java代码首先要有java运行环境,Windows系统可以打开cmd,输入java -version看一下java的运行环境是否配置好,如图即为已配置好环境。
如果配置环境有问题,可以百度“java环境配置”参考配置。
2. 可以选择一个舒服的IDE集成开发环境,这里我选用的idea。
选择你本地jdk安装的位置即可。
用java写输出1到100中能被7整除(例如14.21)或者个位数是7,(例如27.47)的数字?
java参考代码:
public class Demo
{
public static void main(String[] args) {
for (int i=1; i<100; i++) {
if (i%7==0 || i%10==7) {
System.out.print(i + "\t");
}
}
System.out.println("");
}
}
为什么阿里巴巴Java开发手册中不允许魔法值出现在代码中?
其实大多数的开发规范都会禁止魔法值(未经预先定义的变量)的使用,因为它存在着很多的弊端。
- 魔法值容易出错。当在代码中多次使用同样字面值时,如果出现了拼写错误,那么程序将会发生不可预料的错误,而且这种错误难以在前期发现。而如果使用变量,IDE和编译器等就可比较容易发现错误,减少像题中出现键值不相同的情况发生。
- 魔法值难以修改维护。当我们需要修改多次出现的魔法值时,我们就要进行查找之后再修改,有时一些魔法值容易与其他代码混淆,此时修改工作就十分困难了。而预先定义的变量仅需修改一处就可以了,明显更为方便。
- 魔法值降低代码可读性。当代码中遍布魔法值,尤其是一些魔法数字的时候,除非有详尽的注释,否则其他人很难弄清魔法值的含义,代码开发者自己也不容易记得。而使用合适的名称进行变量命名,可读性就会大大增加。
在开发中应养成良好的编码习惯,避免魔法值的使用,提高代码的正确性和可维护性。
道理很简单,阿里巴巴规模很大,员工很多,员工的流动也很频繁,试想一下一位代码中满是魔法值的老员工辞职了,让接替他的新员工怎么办?又让阿里巴巴怎么办?
作为互联网龙头企业,阿里巴巴没有那么多时间去让新员工适应老员工的代码写作风格,高效是它永恒的追求,所以才有了这么一套标准化的代码写作规范。
在阅读《阿里巴巴Java开发手册》时,发现有一条关于关于常量定义的规约,具体内容如下:
图中的反例是将数据缓存起来,并使用魔法值加链路 id 组成 key,这就可能会出现其他开发人员在复制粘贴的时候,少复制 _ 的情况发生,这种错误很难去检查到,因为读取缓存不存在,可能会去数据库读取,很难察觉到。
如果在生产环境中,大量的请求进来,缓存全部失效,直接请求数据库,导致数据库连接过多,查询效率变低的问题发生,因此看来魔法值确实应该避免出现在代码中。
另外在 《Clean Code》 和 《重构》 等书中也提到了类似的问题,在代码中出现原始形态数字通常来说是坏现象,应该用命名良好的常量类隐藏它。
静态常量取代魔法值
像下面这个例子:
如果在不了解这块的业务的同事,在读到这块代码的时候,可能会想,75 是什么鬼,为啥和这个数比较,背后深藏着什么秘密吗?可能只有当时的开发人员记得了,导致代码可读性和可维护性极差。
如果声明一个常量,来替换该魔法值,可能就会使代码的可读性和可维护性大大增加。
还有些魔法表达式,比如:
比如这个表达式是表示状态为正常且项目活跃,就可以定义:
这样是不是可读性就提高了,一眼就可以看出来这块代码的逻辑。
枚举类取代魔法值
还有一种消除魔法值的方式是使用枚举类代替,下面让我们举个例子:
如上代码是针对事件 id 去执行相应的事件,如果事件比较少,大家还可以勉强记住每个 eventId 对应的含义,但是随着事件 id 的增多,很可能会发生,新来的员工把事件 id 给搞混了,导致执行错误的事件,发生 bug。
那么我们可以使用枚举类来表示相应的事件:
修改完之后的代码如下:
是不是可读性急剧提升,还不快看看自己代码中有没有这样的魔法值出现,有的话赶紧改造起来。
还有如果你需要在不同的地点引用同一数值,魔法数会让你烦恼不已,因为一旦这些数字发生改变,就必须在程序中找到所有的魔法值,并将它们全部修改一遍,这样就太费时费力了。
其实不只是 Java 不应该在代码中使用魔法值,其他语言亦是如此。
总结
主要介绍了为什么不允许在代码中出现魔法值以及如何将代码中已有的魔法值去除掉。
代码可读性还是比较重要的,你肯定不希望别人在接手你的代码的时候,骂到这数字啥意思,这代码写得跟粑粑一样。