开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
  1. Home
  2. Computer Science
  3. This article

聊聊那些奇葩的代码规范 —— 滥用静态导入

2023年06月09日 774Browse 0Like 0Comments

因为有些要求感觉实是太过奇葩,收集下来娱乐下大家。

代码规范要求

要求如果代码可以静态导入的话,就必须要静态导入。

所有的代码如果不静态导入,就直接 PR 拒绝合并。

举例:
equalsAnyIgnoreCase("test","test"); 这个必须要使用 import static org.apache.commons.lang3.StringUtils.equalsAnyIgnoreCase;

如果我们写成:
StringUtils.equalsAnyIgnoreCase("test","test");

奇葩的架构师,要求这个必须要修改为静态导入。

奇葩解读

Java 的静态导入 (import static) 是从 JDK 1.5 版本开始提供的,其目的是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序。

用于导入指定类的某个静态成员变量、方法或全部的静态成员变量、方法。如果一个类中的方法全部是使用 static 声明的静态方法,则在导入时就可以直接使用 import static 的方式导入。

滥用静态导入会使程序更难阅读,更难维护。

静态导入后,代码中就不用再写类名了,但是我们知道类是“一类事物的描述”,缺少了类名的修饰,静态属性和静态方法的表象意义就会被无限方法,这会让阅读者很难弄清楚其属性或方法代表何以,甚至是哪一个类的属性(方法)都要思考想一下,特别是在一个类中有多个静态导入的时候还使用了通配符(*)这个静态导入简直是个噩梦。

还是用 StringUtils 来举例。

不是只 Apache Commons 才有 StringUtils 的。

 

2023-06-08_12-10-23

随便拉个项目,你看看就有多少个 StringUtils,同时 equalsAnyIgnoreCase 这个方法名也不是在一个包使用的。

可能在很多包中都用了这个方法名。

这种奇葩的强制使用静态导入的要求,简直是令人发指,在特定阶段的时候破坏了程序的可读性。

在实际使用的时候,对于一些公共方法名,尽量不要使用静态导入。

但是针对测试的一些测试类中使用的断言,还是可以使用静态导入的。


import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;

如果上面我们常用的一些测试中使用的断言。

 

https://www.ossez.com/t/topic/14492

Tags: None
Last updated:2023年06月09日

HoneyMoose

有温度的人文和独立的思考

Like
< Previous
Next >

Comments

Cancel reply

Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (513)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1