星辰大海▼ 2020▼ Smell Java Logging Exception Spring

S001:不要吃异常,不要省日志

#Smell #Java #Logging #Exception #Spring

1.目标:写日志很重要

在CodeReview时,逮住一段有味(Smell)代码(图①), 从执行上讲,讲问题不大。但与攻城狮洁癖,那就很难闻了。

图①:吃掉了异常栈,同时代码不优雅。

2.坏味:日志和异常栈

代码中failed: {}格式和e.getMessage(),用错了。 其中,{}是解决性能问题的,e我们需要的是栈消息。

使用资源,一定要在finally里关闭,养成习惯。

3.假想:进化的程序猿

以下,开始意淫几种常见的代码Smell,不考虑使用Utils。

图②:初级猿,随心所欲 print

图③:中级猿,处理不了 throws

图④:高级猿,正确日志,正确关闭

图⑤:攻城狮,既然Spring,就Spring

4.总结:本质y=f(x)

处理好异常和记录好日志是提高代码质量的关键节点。

一个健壮的方法(method)/函数(funtion)必须保证以下4点:

(a)输入:para/args符合要求(定义域)。
(b)规则:程序体没有逻辑漏洞或数据污染。
(c)输出:out/return符合要求(值域)。
(d)异常:err/throws被有效的处理。

5.疑问:好像跑题了

读到这里,看官是否有疑问,为啥图⑤是推荐的做法呢? 它不正好吃掉了异常,吃掉了日志,与标题相反么? 看起来,图④才符合标题和规则呀…

是的,图④是正确的,但图⑤最合适的。

※ 我们的征途是星辰大海 ※

《S001:不要吃异常,不要省日志》 代码中failed: {}格式用错了。其中,{}是解决性能问题的,e我们需要的是栈消息。使用资源,一定要在finally里关闭,养成习惯。
题图:Astronomy Picture of the Day, Discover the cosmos!