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

news2025/1/20 5:51:46

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

代码规范要求

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

所有的代码如果不静态导入,就直接 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 这个方法名也不是在一个包使用的。

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

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

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

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

import static org.apache.commons.lang3.StringUtils.split;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/625651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

总结894

学习目标: 月目标:6月(线性代数强化9讲遍,背诵15篇短文,考研核心词过三遍) 周目标:线性代数强化3讲,英语背3篇文章并回诵,检测 每日必复习(5分钟&#xff0…

chatgpt赋能python:Python怎么Import自己写的SEO文章

Python怎么Import自己写的SEO文章 如果你是一位Python开发人员,并且正在为SEO优化而努力编写文章,那么你可能会想知道如何将自己编写的SEO文章导入您的程序中以便更好的利用。 在这篇文章中,我们将介绍如何使用Python中的import语句将自己编…

UNIX网络编程卷一 学习笔记 第十九章 密钥管理套接字

随着IP安全体系结构(IPsec)的引入,密钥加密和认证密钥的管理越来越需要一套标准机制。RFC 2367介绍了一个通用密钥管理API,可用于IPsec和其他网络安全服务,该API创建了一个新协议族,即PF_KEY域,…

chatgpt赋能python:Python一行输入三个数:方便快捷,还能提高效率!

Python一行输入三个数:方便快捷,还能提高效率! Python是一门非常流行的编程语言,不仅仅因为它简单易用,更因为它拥有丰富的生态系统和强大的库支持。但是,Python的输入方式却是许多人常常感到头疼的部分。…

学会使用“条件断点“来解放你的鼠标

(PS:对调试较为熟悉却没有使用过条件断点的同学可以直接翻到文章底部看操作的GIF图~) 一、背景 "Debug"想必大家在开发的过程中也是有经常使用的,这里简单的介绍一下浏览器"Debug"其中的两种方式。&#xff…

使用idea创建java web项目

创建web项目有很多方法,就说一个最简单的方法吧。 创建一个java项目,点击创建右击项目选择添加框架支持。勾选上web应用程序,点击确定。 再点击当前文件,编辑配置 点击加号,选择Tomcat服务器(本地&#xf…

【连续介质力学】变形梯度

变形梯度 简介 本节讨论两个不同质点P和Q的之间的相对运动变化 拉伸比和相对伸长 d X ⃗ d\vec X dX : 在参考构形连接质点P和Q的向量,线单元 M ^ \hat M M^: d X ⃗ d\vec X dX 方向的单位向量 d x ⃗ d\vec x dx : 在当前构形连接质点P’和Q‘的向量&#xff…

对象存储分布式代理-go初学者的开源练手项目

最近写了一个go语言练手项目osproxy和osproxy-grpc,代码已完全开源到github。 相信不少接触go语言的读者,都是被它"极简协程",“高并发”,"高性能"的特性所吸引,我也不例外,想着学完之…

基于MATLAB涡度通量数据处理技术应用

点击查看原文 本文基于MATLAB语言、以实践案例为主,提供代码、原理与操作结合 1、以涡度通量塔的高频观测数据为例:基于MATLAB开展上机操作 2、涡度通量观测基本概况:观测技术方法、数据获取与预处理等 3、涡度通量数据质量控制&#xff1…

第3章 需求分析(上)

第3章 需求分析(上) 3.1 需求分析任务 3.1.1 确定对系统的综合要求 1. 功能需求 通过需求分析应该划分出必须完成的所有功能。 2. 性能需求 性能需求指定系统必须满足的定时约束或容量约束 3. 可靠性和可用性需求 可靠性需求定量地指定系统的可靠…

二叉树的最近公共祖先LCA

一、什么是最近公共祖先 LCA为最近公共祖先(Lowest Common Ancestor)的缩写。 对于一棵有根树T的两个节点u,v,最近公共祖先LCA(T,u,v)代表一个节点x。 LCA(5,6) 2 LCA(7,12) 3 LCA(2,1)1 二、公共祖先的朴素解法 两个节点先调整到相同的深度每一次…

Qt6使用cmake创建项目

目录 创建普通项目 创建qt项目 创建具有资源文件的qt项目 在QT6中,官方推荐在新的项目中使用CMake。 在Qt Creator中使用CMake构建系统时,与往常的qmake有一些不一样,因此写一篇文章来记录一下。 创建普通项目 我们先写一个最简单的项目…

chatgpt赋能python:Python的Unicode编码介绍

Python的Unicode编码介绍 什么是Unicode Unicode是一个字符集,它定义了世界上几乎所有的字符,包括字母、数字、符号和标点。Unicode使用唯一的数字编码来表示每个字符,这使得在不同的操作系统和编程语言中展示和处理字符非常方便。在Python…

chatgpt赋能python:Python怎样完成更新?

Python怎样完成更新? Python是一种非常流行的编程语言,由于它的简单易学和广泛的应用领域,许多程序员选择使用Python编写程序。但是,随着时间的推移和技术的不停发展,Python需要不断更新以保持全球开发者的使用体验。…

ES 如何重建索引

场景: ES索引中,为了效率和存储空间,有些字段可以设定为不被索引,然后某一天又需要改成能索引,此时就需要对ES进行重建索引,操作如下 1、修改 ES 索引模板文件 cd /data/elk/logstash/es-template/ vim e…

JavaSE笔记(七)

Java反射和注解 **注意:**本章节涉及到JVM相关底层原理,难度会有一些大。 反射就是把Java类中的各个成分映射成一个个的Java对象。即在运行状态中,对于任意一个类,都能够知道这个类所有的属性和方法,对于任意一个对象…

几十款游戏的简单分析

文章目录 一、 介绍二、 影响游戏体验的因素三、 游戏能爆火的因素1.影响游戏爆火因素的排名2.玩游戏的两种经典心理3.经典案例分析Qq农场植物大战僵尸水果忍者召唤神龙羊了个羊 4.游戏公司可借鉴的经验5.未来游戏面对的诸多挑战 四、 几十款游戏的多方面分析FC红白游戏机十二人…

chatgpt赋能python:Python中的import使用详解

Python中的import使用详解 介绍 在Python中,import是将一个模块引入到当前脚本中使用的关键字。Python中的模块是指一个包含所有定义、函数和变量等的Python文件,也可以包含其他模块,从而构成一个Python程序。在Python中,有很多…

spark相关理论

系列文章目录 ubuntu虚拟机下搭建zookeeper集群,安装jdk压缩包,搭建Hadoop集群与spark集群的搭建【上篇】_ubuntu搭建zookeeper集群 ubuntu虚拟机下搭建zookeeper集群,安装jdk压缩包,搭建Hadoop集群与spark集群的搭建【下篇】 …

Redux基本使用和实践

Redux的核心是store,store作为应用状态的容器,保存着这个页面的状态数据树。 store 但是store本质上是一个JavaScript对象,这个对象含有了dispatch以及获取页面状态数据的方法等等。 如上图所示,store提供几个方法给开发者调用&…