开源软件的坏味道

作者: 阿里云云栖号 | 来源:发表于2018-11-14 17:47 被阅读84次

前言

开源软件的世界,我们一直带着一颗敬畏之心来使用与学习,我们总觉得他们高高在上、他们完美无缺。但金无足赤,强如JDK、Spring也同样有这样或那样的问题。
他们也并非那么遥不可及,我们也未必只配仰望,这里我们列举开源软件的那些“bad smell”,前车之鉴、后车之覆,开源软件也同样不完美。站在巨人肩膀上看到巨人的不完美,激励着我们往更成功的巨人之路迈进 ?

JDK篇

Handler#setFormatter

代码片段出自java.util.logging.Handler#setFormatter,作者为了不让空指针异常下传,提前做一次检查,这本无可厚非,但采用这种方式来检查,或许并不是个优雅的方案。

"Comments Do Not Make Up for Bad Code"
--- Robert C.Martin 《Clean Code》

同样在java.util包下,java.util.Objects#requireNonNull在此处应该是更好的选择。

public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier) {
    if (obj == null)
        throw new NullPointerException(messageSupplier.get());
    return obj;
}

Spring篇

BeanUtils#copyProperties

代码出自org.springframework.beans.BeanUtils#copyProperties,代码中引入了过多的if,嵌套的层级达到6层之多。但细看不难发现,其实都不是不同的逻辑分支,而是一些filter过滤,一方面用lambda的filter可以优化,提前return也是个不错的选择。

"Deeply nested code hurts readability and is error-prone"

--- Google Code Health Series

后续

“挑刺”不是目的,有则改之无则加勉,他人之优与劣、功与过皆能在成功路上,助我等一臂之力。



本文作者:聂晓龙

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

相关文章

  • 开源软件的坏味道

    前言 开源软件的世界,我们一直带着一颗敬畏之心来使用与学习,我们总觉得他们高高在上、他们完美无缺。但金无足赤,强如...

  • 设计坏味道

    设计坏味道 1. 设计坏味道概述 为何要关注坏味道,因为坏味道影响了软件的质量;给项目的开发、维护、扩展等带来了影...

  • 2018-03-24

    开源软件简介 开源软件(能看见软件的源代码)精神: 使用的自由、研究的自由、散布及改良的自由 开源软件: apac...

  • 值得关注的开源软件

    看了值得关注的开源软件推荐,感觉很不错,作者接触开源软件十几年,协作开发了10多个开源项目,对开源软件的认识和实践...

  • 坏味道与重构手法

    坏味道(英文)坏味道(中文)页码常用重构Alternative Classes with Different In...

  • 识别代码中的坏味道(三)

    前两篇文章 《识别代码中的坏味道(一)》 和 《识别代码中的坏味道(二)》 中已经介绍了 18 个代码坏味道。《重...

  • 开源软件

    盘点我所使用的开源软件 Notepad++ Emacs ShadowSocks

  • SparkUI定制

    前言 感谢开源世界的大牛们贡献这么多开源软件,让我们有机会学习复杂软件的设计,同时也可根据自己的需要定制开源软件。...

  • 免费、好用、强大的开源笔记软件综合评测

    开源笔记软件列表 笔记产品那么多,为什么要使用开源笔记软件? 开源笔记软件的优点和缺 优点 免费使用; 可扩展性强...

  • 代码的坏味道

    0. 本章内容导图 1. 常见的代码坏味道 (1)重复代码 坏味道中首当其冲的就是重复代码,重复代码是万恶之源,如...

网友评论

  • a36618162aaf:请在指出别人错误时,提出自己的解决方案

本文标题:开源软件的坏味道

本文链接:https://www.haomeiwen.com/subject/nandfqtx.html