}
public void doB(){
System.out.println("I am doing B");
}
public void doC(){
int i = 1/0;
System.out.println("I am doing C");
}
public void doD(){
System.out.println("I am doing D");
}
public void doE(){
System.out.println("I am doing E");
}
}
上面的程序有个问题,在doC函数中存在除0异常,程序运行后会崩溃,我们可以得到如下日志反馈:
I am doing A
I am doing B
Exception in thread “main” java.lang.ArithmeticException: / by zero
at BusinessLogic.doC(Example.java:27)
at Example.main(Example.java:7)
sandbox> exited with status 0
但是有的程序员,特别害怕崩溃,为了让自己的程序不会崩溃,直接在最外层进行try-catch:
public class Example {
public static void main(String[] args) {
try {
BusinessLogic bl = new BusinessLogic();
bl.doA();
bl.doB();
bl.doC();
bl.doD();
bl.doE();
} catch(Exception e) {
e.printStackTrace();
}
}
}
结果,程序是不会崩溃了,但是逻辑并没有正确地执行,这个时候如果让你去排查这个问题,你能第一时间定位到doC函数有问题吗?我觉得大部分人都不能。
虽然这个例子看起来有点可笑,但是在实际开发中确实看到过不少这种现象,更有甚者,连e.printStackTrace()这句话都懒得加,程序没有任何异常日志,想排查这种错误简直痛不欲生。
[]( )空指针强迫症
=================================================================
前面说到崩溃,大家知道排名前2的崩溃是什么吗?没错,那就是:
NullPointerException
IndexOutOfBoundsException
大家可以检查下自己的项目,看看这两个异常是不是占大头。所以,为了防止空指针异常,很多程序员会这样写代码:
public class Example {
public static void main(String[] args) {
BusinessLogic bl = new BusinessLogic();
Object param = new Object();
bl.doA(param);
}
}
class BusinessLogic {
public void doA(Object o){
if (o != null) {
System.out.println("I am doing A with param : " + o);
doB(o);
}
}
public void doB(Object o){
if (o != null) {
System.out.println("I am doing B with param : " + o);
doC(o);
}
}
public void doC(Object o){
System.out.println("I am doing C with param : " + o);
}
}
最后
我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。
其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。
不断奔跑,你就知道学习的意义所在!
CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
奔跑,你就知道学习的意义所在!
[外链图片转存中…(img-vOfV0fuh-1631092288426)]
CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
[外链图片转存中…(img-eVxqBMZq-1631092288428)]