Java开发手册之常量定义

Java开发手册之常量定义Java开发手册之常量定义

大家好,又见面了,我是你们的朋友全栈君。

  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);}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106541.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月22日 下午10:20
下一篇 2022年4月22日 下午10:20


相关推荐

  • Potplayer + LAVFilters + madVR 配置教程

    Potplayer + LAVFilters + madVR 配置教程文章目录Potplayer+LAVFilters+madVR配置教程工具安装篇设置调教1.potplayer播放器设置加载LAVFilters和madVR1.选择“源滤镜/分离器”选项,选择“滤镜/解码器管理”2.“添加外部滤镜”3.浏览到刚才LAVFilters解压的文件夹,分别添加图示项。4.添加后回到管理界面设置,点击左边的”LAVAudioDecoder”,将右边”音频解码器”…

    2022年5月22日
    306
  • html css制作404页面,一款纯css3实现的漂亮的404页面

    html css制作404页面,一款纯css3实现的漂亮的404页面实现的代码。html代码:404ERRORLost?MaybeIcanhelp.required/>SearchMySuggestions.HomePortfoliocss3代码:body{background-color:#0A7189;color:#fff;font:100%”Lato”,sans-serif;font-size:1.8r…

    2022年7月27日
    14
  • HTTP和HTTPS有什么区别? 什么是SSL证书?使用ssl证书优势?

    HTTP和HTTPS有什么区别? 什么是SSL证书?使用ssl证书优势?

    2021年10月25日
    51
  • 快速解决Android中的selinux权限问题

    快速解决Android中的selinux权限问题关于selinux的详细资料,请查阅http://blog.csdn.net/innost/article/details/19299937在Android开发的过程中,遇到关于selinux相关的东西,当时还一下子看不懂,现在好像有点眉目了。比如,内核打印这个提示type=1400audit(32.939:25):avc:denied{open}forpid=2…

    2022年6月27日
    54
  • java getclass_Java–getClass()和.Class的区别

    java getclass_Java–getClass()和.Class的区别在程序运行时期动态获得对象类型信息的操作,对比传统编程和反射的区别。传统编程:在编译阶段决定使用的类型反射:动态获得类型每个类都会产生一个对应的Class对象,也就是保存在.class文件。所有类都是在对其第一次使用时,动态加载到JVM的,当程序创建一个对类的静态成员的引用时,就会加载这个类。Class对象仅在需要的时候才会加载。类加载器首先会检查这个类的Class对象是否已被加载过,如果尚未加载…

    2022年6月15日
    28
  • 如何在mac上查看gcc版本号[通俗易懂]

    如何在mac上查看gcc版本号[通俗易懂]linux能够很方便得查看gcc版本号,只需要输入gcc–version就能得到如下结果,能一目了然gcc版本是4.9.2gcc(GCC)4.9.2Copyright(C)2014FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNOwarranty;notevenforMERCHANTABILITYorFITNESSF

    2022年6月26日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号