Java编程规范-常量定义

news/2025/2/2 15:30:39/文章来源:https://www.cnblogs.com/aeolian/p/18683818

常量定义规范

  1. 【强制】常量不允许任何魔法值(即未经定义的常量)直接出现在代码中。
    反例:

    String key = "Id#taobao_" + tradeId;  
    cache.put(key, value);
    
  2. 【强制】long 或者 Long 初始赋值时,必须使用大写的 L,不能是小写的 l,小写容易跟数字 1 混淆,造成误解。
    说明:Long a = 2l; 写的是数字的 21,还是 Long 型的 2?

  3. 【推荐】不要使用一个常量类维护所有常量,应该按常量功能进行归类,分开维护。如:缓存相关的常量放在类:CacheConsts 下;系统配置相关的常量放在类:ConfigConsts 下。
    说明: 大而全的常量类,非得使用查找功能才能定位到修改的常量,不利于理解和维护。

  4. 【推荐】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。
    1) 跨应用共享常量:放置在二方库中,通常是 client.jar 中的 constant 目录下。
    2) 应用内共享常量:放置在一方库的 modules 中的 constant 目录下。
    反例: 易懂变量也要统一定义成应用内共享常量,两位攻城师在两个类中分别定义了表示“是”的变量:

        类 A 中:public static final String YES = "yes";类 B 中:public static final String YES = "y";A.YES.equals(B.YES),预期是 true,但实际返回为 false,导致线上问题。
    

    3) 子工程内部共享常量:即在当前子工程的 constant 目录下。
    4) 包内共享常量:即在当前包下单独的 constant 目录下。
    5) 类内共享常量:直接在类内部 private static final 定义。

  5. 【推荐】如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类。下面正例中的数字就是延伸信息,表示星期几。
    正例:
    public Enum { MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025省选模拟8

2025省选模拟8题目来源: 2024省选联测10 \(T1\) HZTG5836. 小幸运 \(18pts\)将坐标扩大 \(2\) 倍后答案只可能为整数,证明显然。二分答案, \(check\) 时考虑 \(2-SAT\) 。将一个点可能构成的等腰直角三角形划分成如下四个部分,最终仅能选择相邻的两个。不妨两条对角线上的取…

2025临沂一中强基考试游记

大烂特烂,故作此篇。 友情出演:王茂 *:八下年级rk1、常年年级前五。 范明 *:实力不详,遇强则强,至少比我强。 张晨 *:考过全区rk1,磕头。 公续 *、刘子 *:仅次于王张的大神。 韩梓 *:六边形战士。 张嘉 *、左世 *:实力不是很清楚( 比我强就对了Day -2 被我妈施压了…

对象池框架 commons pool2 原理与实践

当资源对象的创建/销毁比较耗时的场景下,可以通过"池化"技术,达到资源的复用,以此来减少系统的开销、增大系统吞吐量,比如数据库连接池、线程池、Redis 连接池等都是使用的该方式。 Apache Commons Pool 提供了通用对象池的实现,用于管理和复用对象,以提高系统…

20252025临沂一中强基考试游记

大烂特烂,故作此篇。 友情出演:王茂 *:八下年级rk1、常年年级前五 范明 *:实力不详,遇强则强,比我水平高 张晨 *:考过全区rk1,磕头 公续 *、刘子 *:仅次于王张的大神 韩梓 *:六边形战士 张嘉 *、左世 *:实力不是很清楚( 比我强就对了Day -2 被我妈施压了,说是考不…

【大厂文章学习】合并编译的学习与思考

合并编译通过将微服务的远程调用优化为本地函数调用,显著降低CPU开销和容器资源需求,但需权衡服务隔离、版本管理等挑战,适用于资源密集、调用关系紧密的场景。【大厂文章学习】合并编译的学习与思考【微信文章】字节跳动合并编译实践通过将微服务转换为本地函数调用的方式优…

安全帽识别摄像机

安全帽识别摄像机在建筑工地安全管理中具有重要意义。在高空作业、机械作业等危险环境下,佩戴安全帽是保障工人生命安全的重要措施。通过部署这种设备,系统可以实时监测工地内的作业人员,并自动识别出未佩戴安全帽的情况,及时发送警报通知现场管理人员进行处理,有效预防事…

监狱视频监控行为智能预警系统

监狱视频监控行为智能预警系统通过在监狱围墙、监舍、走廊、习艺楼等区域部署摄像机,监狱视频监控行为智能预警系统实现了对监狱内部的全方位、全天候监测。系统对连续的行为动作进行有效判断精准识别出离床、攀高、独处、倒地、斗殴、徘徊、滞留、逆行、聚众、静坐不动、入厕…

Spring-AOP(面向切面编程)

Spring-AOP(面向切面编程)面向切面编程(Aspect Oriented Programming-AOP)是面向对象编程(Object Oriented Programming-OOP)的一种补充,二者是互补的编程范式。在OOP中,关键单元是类,而在AOP中关键单元则是横切关注点。面向对象编程关注于将现实世界中的实体抽象为对象,并…

Java的控制流程

Java的控制流程 1. Scanner对象Java.util.Scanner 是Java5的新特性,我们可以通过Scanner类来获取用户的输入。 基本语法: Scanner s = new Scanner(System.in); 通过Scanner类的next() 与nextLine()方法获取输入的字符串,在读取我们一般需要 使用 hasNext() 与 hasNextLine…

【Java安全】基础汇总

一、JAVA安全 1.1 java的序列化和反序列化 Java 序列化是指把 Java 对象转换为字节序列的过程ObjectOutputStream类的 writeObject() 方法可以实现序列化 Java 反序列化是指把字节序列恢复为 Java 对象的过程ObjectInputStream 类的 readObject() 方法用于反序列化。 1、序列化…

云计算和服务器

一、云计算概述 ICT是世界电信协会在2001年的全球性会议上提出的综合性概念,ICT分为IT和CT,IT(information technology)信息技术,负责对数据生命周期的管理;CT(communication technology),负责数据的传输管理。 CT技术是ICT技术栈的底核。 1、计算机 计算机是现代一种…

movfuscator学习

demovfuscator docker镜像 - 狗小剩就是利用32位mov的图灵完备性,来代替各种代码(32位汇编太逆天了).如果看到只有mov就知道是这b玩意了,不过这种程序性能肯定不行,代码段也好长.可以利用ida查锁定字节码的范围,查相应的字符串. demovfuscator问题太多了,一个是识别c的代码无法…