【代码规范】公共常量封装:接口、枚举还是普通类

2024-08-22 01:38

本文主要是介绍【代码规范】公共常量封装:接口、枚举还是普通类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 背景

虽然项目组定义了软件开发规范,包括了技术选型、接口规范等,但是在实际执行中还是存在一些不足。本文所记录的常量封装就是其中一个问题,目前项目中关于常量的封装存在3种形式,比较混乱。通过查阅相关资料,对使用目的、各封装形式的优缺点进行分析,给出常量封装的推荐使用规范。

2. 3种封装形式

  • 普通类
public class ErrorCodeConstant {public final static String PARAMTER_ERROR = "10001";public final static String URL_IS_EMPTY = "10002";
}

使用final static来修饰公用常量,直接通过类名.变量名的形式访问

  • 接口
public interface ErrorCodeConstant {String PARAMTER_ERROR = "10001";String URL_IS_EMPTY = "10002";
}

接口的变量默认是public final static修饰的,所以使用接口来封装常量,看起来比较简洁,也用很多开源项目使用接口来封装公用常量,如阿里巴巴的fastjson。但很多人认为这是Bad-Practice,一种反模式的实践,因为接口一般是一类方法的抽象,需要通过实现类来实现功能,用来封装常量不符合设计初衷。

  • 枚举

在这里插入图片描述
在java 1.5中引入了枚举类,提供了一种更好的封装公用常量的形式。跟接口和普通量相比,枚举类不仅能定义常量,而且能定义相关方法,使用常量的使用更加灵活。
枚举类基础可参考链接:https://blog.csdn.net/testcs_dn/article/details/78604547

3. 应用场景

“任何脱离实际应用场景的分析都是瞎扯淡”    -- 佚名

正如某位大师所说,我们分析问题需要从根源出发,根据我们的使用场景来选择合适的常量封装形式。
使用常量的场景:

  1. 简单的公有常量定义,如系统常量标识,则直接使用枚举类

这篇关于【代码规范】公共常量封装:接口、枚举还是普通类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094877

相关文章

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可