前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >聊聊那些奇葩的代码规范 —— 滥用静态导入

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

作者头像
HoneyMoose
发布于 2023-06-10 09:54:34
发布于 2023-06-10 09:54:34
19400
代码可运行
举报
文章被收录于专栏:CWIKIUSCWIKIUS
运行总次数:0
代码可运行

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

代码规范要求

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

所有的代码如果不静态导入,就直接 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 的。

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java基础学习-static关键字
在类中,用static声明的成员变量为静态成员变量,或者叫做:类属性,类变量。 静态属性的访问形式: 对象名.属性 类名.属性 它为该类的公用变量,类属性,被该类的所有实例共享,在类被载入时被显式初始化 public class StaticDemo { String name = "zhangsan"; static int age = 30; public static void main(String[] args) { StaticDemo staticDe
FutureTester
2021/12/19
2980
Java 静态导入:规则、实践与应用场景
Java 编程中,“静态导入”(import static)自 Java 5 引入,是提升代码可读性和编写效率的技巧。但需正确恰当使用。本文探讨其机制、规则、常见错误及在实际开发中的应用。
Yeats_Liao
2025/01/06
1330
Java 静态导入:规则、实践与应用场景
不得不会的10点Java基础知识
实例变量:指每个对象独立的,修改其中一个对象的实例变量,不会影响其他实例变量的值,变量值无 static 关键字修饰;
程序员飞飞
2020/02/27
4020
不得不会的10点Java基础知识
Java之static作用的全方位总结
 引用一位网友的话,说的非常好,如果别人问你static的作用;如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的;如果是说 可以构成 静态代码块,那别人认为你还可以; 如果你说可以构成 静态内部类, 那别人认为你不错;如果你说了静态导包,
小勇DW3
2018/08/30
1.6K0
Java之static作用的全方位总结
final 和 static 关键字总结
final 关键字主要用在三个地方: 对于 final 变量,如果是基本数据类型,则其数值在初始化后便不能更改;如果是引用类型,对其进行初始化后,便不能再指向另一个对象; 用 final 修饰类,表明这个类不能被继承,此时类中的所有成员方法,都会被隐式地指定为 final 方法; 使用 final 方法的原因有两个。第一个原因是把方法锁定,防止任何继承类修改它的含义;第二个原因是效率,早期的 Java 版本中,会将 final 方法转为内嵌调用,但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(如
happyJared
2019/07/01
3760
【Java探索之旅】静态关键字static与代码块的奥秘
假设现在有5名同学,他们的性别、年龄可能各不一样,但是上课的教室一样的,你会怎么去定义这个类呢?这里面有一个共同点,教室是一样的,你如果把教室设置成对象的成员变量,那么每new一个对象,都会包含这个成员变量,造成空间上的浪费和不必要的麻烦。我们的本意是想要共享,而不是每个对象都存一份。
屿小夏
2024/05/06
1120
【Java SE】类和对象(下)
1. 在 IDEA 中先新建一个包: 右键 src -> New -> Package
用户11369558
2024/11/20
960
【Java SE】类和对象(下)
Junit 实例精讲基础教程(二) 使用@Test+expected、@Rule+ExpectedException模拟方法异常执行的方式
在实际业务中,进行单元测试时,我们除了需要测试正常流程和正确的程序功能之外,可能还需要测试异常场景,在Junit中该如何模拟异常场景呢?
青山师
2023/05/04
4990
Java static 关键字
静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法。静态变量与实例变量不同,实例变量总是通过对象来访问,因为它们的值在对象和对象之间有所不同。
await
2021/09/09
3100
16(03)总结增强for循环,静态导入,可变参数
3:增强for循环(掌握) (1)是for循环的一种 (2)格式: for(元素的数据类型 变量名 : 数组或者Collection集合的对象) { 使用该变量即可,该变量其实就是数组或者集合中的元素。 } (3)好处: 简化了数组和集合的遍历 (4)弊端 增强for循环的目标不能为null。建议在使用前,先判断是否为null。 package cn.itcast_01; import java.util.ArrayList; import java.util.List; /* * JD
Java帮帮
2018/03/15
1.3K0
JavaSE(三)之static、final、abstract修饰符
一、static修饰符 1.1、static变量         在类中,使用static修饰的成员变量,就是静态变量,反之为非静态变量。         静态变量和非静态变量的区别  静态变量属于类的,"可以"使用类名来访问,非静态变量是属于对象的,"必须"使用对象来访问. public class Student{ private static int age; private double score;
用户1195962
2018/01/18
7080
【个人记录】JAVA基础语法之类和对象
2.  类是一种自定义的类型,可以用来定义变量. 相当于搞了个类似int,double的新类型,不同的只是int,double是JAVA的内置类型
用户11292525
2024/09/26
960
【个人记录】JAVA基础语法之类和对象
【Java 基础】类和对象(构造&this&封装&static&代码块)
类:把具有相同属性和行为的一类对象抽象为类。类是抽象概念,如人类、犬类等,无法具体到每个实体。
IsLand1314
2024/10/15
1790
【Java 基础】类和对象(构造&this&封装&static&代码块)
Java中的 static
如果我们需要频繁引用某一个类下的方法,比如 ​​java.lang.Math​​​ 类下相关的数据计算类,或者是用于进行单元测试的 ​​org.junit.Assert​​ 类下各种用于断言的方法,就可以采用静态引用,从而可以省去对前边类名的重复书写。
头发还在
2023/10/16
1760
类和对象(3)
在Java中,被static修饰的成员变量,称为类成员。其不属于某个具体的对象,类成员只有一份且是共享的在方法区中。
E绵绵
2024/04/08
910
类和对象(3)
Java——类与对象
<1>Class.forName("com.example.Student"),参数为类的全限定路径。
用户11453640
2025/01/17
1000
知识改变命运 第八集(下):Java中的类和对象
面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说 就是套壳屏蔽细节。 比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器,USB插孔等,让用 户来和计算机进行交互,完成日常事务。但实际上:电脑真正工作的却是CPU、显卡、内存等一些硬件元件。 对于计算机使用者而言,不用关心内部核心部件,比如主板上线路是如何布局的,CPU内部是如何设计的等,用户 只需要知道,怎么开机、怎么通过键盘和鼠标与计算机进行交互即可。因此计算机厂商在出厂时,在外部套上壳 子,将内部实现细节隐藏起来,仅仅对外提供开关机、鼠标以及键盘插孔等,让用户可以与计算机进行交互即可。 封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互
用户11319080
2024/10/17
1050
知识改变命运 第八集(下):Java中的类和对象
单元测试以及JUnit框架解析
我们都有个习惯,常常不乐意去写个简单的单元测试程序来验证自己的代码。对自己的程序一直非常有自信,或存在侥幸心理每次运行通过后就直接扔给测试组测试了。然而每次测试组的BUG提交过来后就会发现自己的程序还存在许多没有想到的漏洞。但是每次修改好BUG以后还是怀着侥幸心理,认为这次不会有bug了。然后又一次自信地提交,结果又败了。因为这样反复几次后。开发者花在找BUG和修复BUG的这些时间加起来已经比他开发这个模块花的时间还要多了。虽然项目经理已经预留了修改BUG和单元测试的时间。但是开发者却习惯性地在写好代码后就认为任务完成了。 然后等问题出来了bug改了很多次还是修复不了的时候才和项目经理说“我碰到预想不到的问题,可能要延期发布我的代码“。如果这个项目不可延期,痛苦的加班就无法避免了。
幺鹿
2018/08/21
2.4K0
Java final, static, this, super 关键字总结
this.employees.length:访问类Manager的当前实例的变量。
大鹅
2021/06/16
5130
java基础提升篇:Static关键字
Static变量 static关键字 在类中用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时初始化,对于该类的所有对象来说,static成员变量只有一份。 可以通过引用或者类名访问静态成员   原来一个类里面的成员变量,每new一个对象,这个对象就有一份自己的成员变量,因为这些成员变量都不是静态成员变量。对于static成员变量来说,这个成员变量只有一份,而且这一份是这个类所有的对象共享。 ◆在类中,用static声明的成员变量为静态变量,或者叫:类属性、类变量。 (注意:静
好好学java
2018/07/02
2940
推荐阅读
相关推荐
Java基础学习-static关键字
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验