精华内容
下载资源
问答
  • 命名规范 常量定义 代码格式

    千次阅读 2018-04-03 09:54:59
     2:常量定义 1. 【强制】不允许任何魔法值 (即未经预先定义的常量)直接出现在代码中。 反例: String key  =   " Id # taobao _"   +  tradeId;   cache . put(key ,  value);   2. 【强制】 long  ...

    我的博客网站:http://www.caoyong.xin:8080/blogger(欢迎访问!有我更多的文章)

    今天 老大把我说了一顿(不止一次),主要就是编码规范的问题,后来给我说,要我参靠阿里的Java开发手册来编写代码,我就整理了一下阿里的Java开发手册,很详细,几乎都包含在内。在刚进公司中,要求最多的不是你能不能实现什么功能,代码编的的质量如何。而是代码规范。规范很重要,很重要,我也要潜心研究,并努力做到规范,好了,话不多说,咋们开始


    1:命名规范

        

    1. 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name / __name / $name / name_ / name$ / name__

     

    2. 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。

     

    说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。

     

    正例:alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。

     

    反例:DaZhePromotion [打折/ getPingfenByName() [评分/ int 某变量 = 3

     

    3. 【强制】类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO /PO 等。

     

    正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion

     

    反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion

     

    4. 【强制】方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。

     

    正例: localValue / getHttpMessage() / inputUserId

     

    5. 【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。正例:MAX_STOCK_COUNT

     

    反例:MAX_COUNT

     

    6. 【强制】抽象类命名使用 Abstract  Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类名开始,以 Test 结尾。

     

    7. 【强制】类型与中括号紧挨相连来定义数组。正例:定义整形数组 int[] arrayDemo;

     

    反例: main 参数中,使用 String args[]来定义。

     

    8. 【强制】POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误。反例:定义为基本数据类型 Boolean isDeleted;的属性,它的方法也是 isDeleted()RPC框架在反向解析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。

     

       9. 【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。

     

       正例:应用工具类包名为 com.alibaba.ai.util、类名为 MessageUtils(此规则参考 spring的框架结构

     

     10. 【强制】杜绝完全不规范的缩写,避免望文不知义。

     

       反例:AbstractClass“缩写”命名成 AbsClasscondition“缩写”命名成 condi,此类随意缩写严重降低了代码的可阅读性。

     

     11. 【推荐】为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达其意。

     

       正例:从远程仓库拉取代码的类命名为 PullCodeFromRemoteRepository

     

       反例:变量 int a; 的随意命名方式。

     

     12. 【推荐】如果模块、接口、类、方法使用了设计模式,在命名时体现出具体模式。

     

       说明:将设计模式体现在名字中,有利于阅读者快速理解架构设计理念。

     

       正例:public class OrderFactory;

     

    public class LoginProxy;

     

    public class ResourceObserver;

     

      13. 【推荐】接口类中的方法和属性不要加任何修饰符号public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。

     

      正例:接口方法签名 void f();

     

      接口基础常量 String COMPANY = "alibaba"反例:接口方法定义 public abstract void f();

     

      说明:JDK8 中接口允许有默认实现,那么这个 default 方法,是对所有实现类都有价值的默认实现。

     

     14. 接口和实现类的命名有两套规则:

     

        1)【强制】对于 Service  DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部的实现类用 Impl 的后缀与接口区别。

     

      正例:CacheServiceImpl 实现 CacheService 接口。

     

        2【推荐】 如果是形容能力的接口名称,取对应的形容词为接口名(通常是able 的形式)。

     

      正例:AbstractTranslator 实现 Translatable


      15. 【参考】枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。

     

    说明:枚举其实就是特殊的常量类,且构造方法被默认强制是私有。

     

    正例:枚举名字为 ProcessStatusEnum 的成员名称:SUCCESS / UNKNOWN_REASON

     

    16. 【参考】各层命名规约:

     

    A) Service/DAO 层方法命名规约

     

    1 获取单个对象的方法用 get 作前缀。

     

    2 获取多个对象的方法用 list 作前缀。

     

    3 获取统计值的方法用 count 作前缀。

     

    4 插入的方法用 save/insert 作前缀。

     

    5 删除的方法用 remove/delete 作前缀。

     

    6 修改的方法用 update 作前缀。

     

    B) 领域模型命名规约

     

    1 数据对象:xxxDOxxx 即为数据表名。

     

    2 数据传输对象:xxxDTOxxx 为业务领域相关的名称。

     

    3 展示对象:xxxVOxxx 一般为网页名称。

     

    4 POJO  DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO



     2:常量定义


    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 应用内共享常量:放置在一方库中,通常是子模块中的 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. 【推荐】如果变量值仅在一个固定范围内变化用 enum 类型来定义。

     

    说明:如果存在名称之外的延伸属性使用 enum 类型,下面正例中的数字就是延伸信息,表示一年中的第几个季节。

     

    正例:

     

    public enum SeasonEnum {

     

    SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4);

     

    int seq;

     

    SeasonEnum(int seq){

     

    this.seq = seq;

     

    }

     

    }

     

     

     

    3:代码格式

     

    1. 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:

     

    1 左大括号前不换行。

     

    2 左大括号后换行。

     

    3 右大括号前换行。

     

    4 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。

     

    2. 【强制】 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。详见

     

     5 条下方正例提示。

     

    反例:if (空格 a == b 空格)

     

    3. 【强制】if/for/while/switch/do 等保留字与括号之间都必须加空格。

     

    4. 【强制】任何二目、三目运算符的左右两边都需要加一个空格。

     

    说明:运算符包括赋值运算符=、逻辑运算符&&、加减乘除符号等。

     

    5. 【强制】采用 4 个空格缩进,禁止使用 tab 字符。

     

    说明:如果使用 tab 缩进,必须设置 1  tab  4 个空格。IDEA 设置 tab  4 个空格时,请勿勾选 Use tab character;而在 eclipse 中,必须勾选 insert spaces for tabs

     

    正例: (涉及 1-5 点)

     

     

    public static void main(String[] args) {

     

    缩进 4 个空格

    String say = "hello";

     

    运算符的左右必须有一个空格 int flag = 0;

     

    关键词 if 与括号之间必须有一个空格,括号内的 f 与左括号,与右括号不需要空格 if (flag == 0) {

     

    System.out.println(say);

     

    }

     

    左大括号前加空格且不换行;左大括号后换行

     

    if (flag == 1) {

     

    System.out.println("world");

     

    右大括号前换行,右大括号后有 else,不用换行

     

    } else { System.out.println("ok");

     

    在右大括号后直接结束,则必须换行

     

    }

     

    }

     

    6. 【强制】注释的双斜线与注释内容之间有且仅有一个空格。正例:

     

    这是示例注释,请注意在双斜线之后有一个空格

     

    String ygb = new String();

     

    6. 【强制】单行字符数限制不超过 120 个,超出需要换行,换行时遵循如下原则:

     

    1 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进,参考示例。

     

    2 运算符与下文一起换行。

     

    3 方法调用的点符号与下文一起换行。

     

    4 方法调用时,多个参数,需要换行时,在逗号后进行。

     

    5 在括号前不要换行,见反例。

     

    正例:

     

    StringBuffer sb = new StringBuffer();

     

    超过 120 个字符的情况下,换行缩进 4 个空格,点号和方法名称一起换行 sb.append("zi").append("xin")...

     

    .append("huang")...

     

    .append("huang")...

     

    .append("huang");

     

    反例:

     

    StringBuffer sb = new StringBuffer();

     

    超过 120 个字符的情况下,不要在括号前换行 sb.append("zi").append("xin")...append

     

    ("huang");

     

    参数很多的方法调用可能超过 120 个字符,不要在逗号前换行 method(args1, args2, args3, ...

     

    , argsX);

     

    7. 【强制】方法参数在定义和传入时,多个参数逗号后边必须加空格。正例:下例中实参的"a",后边必须要有一个空格。

     

    method("a", "b", "c");

     

    9. 【强制】IDE  text file encoding 设置为 UTF-8; IDE 中文件的换行符使用 Unix 格式,

     

    不要使用 Windows 格式。

     

    10. 【推荐】没有必要增加若干空格来使某一行的字符与上一行对应位置的字符对齐。

     

    正例:

     

    int a = 3;

     

    long b = 4L;

     

    float c = 5F;

     

    StringBuffer sb = new StringBuffer();

     

    说明:增加 sb 这个变量,如果需要对齐,则给 ab都要增加几个空格,在变量比较多的

     

    情况下,是非常累赘的事情。

     

    【推荐】不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔开来以提升可读性。说明:没有必要插入多个空行进行隔开。




    展开全文
  • Java常量定义

    千次阅读 2015-04-02 21:46:59
    Java常量定义 /** * char 类型常量 */ private static final char CHAR = 'A'; /** * byte 类型常量 */ private static final byte BYTE = 1; /** * short 类型常量 */ private static ...

    Java常量定义


    /**
    	 * char 类型常量
    	 */
    	private static final char CHAR = 'A';
    	
    	/**
    	 * byte 类型常量
    	 */
    	private static final byte BYTE = 1;
    			
    	/**
    	 * short 类型常量
    	 */
    	private static final short SHORT = 10;
    	
    	/**
    	 * int 类型常量
    	 */
    	private static final int INT = 100;
    	
    	/**
    	 * long 类型常量
    	 */
    	private static final long LONG = 100;
    	
    	/**
    	 * float 类型常量
    	 */
    	private static final float FLOAT = 120f;
    	
    	/**
    	 * double 类型常量
    	 */
    	private static final double DOUBLE = 120.00;
    	
    	/**
    	 * double 类型常量
    	 */
    	private static final boolean BOOLEAN = true;
    	
    	/**
    	 * String 类型常量
    	 */
    	private static final String SUCCESS = "success";


    展开全文
  • 详解JavaScript常量定义

    2020-11-26 14:41:33
    JS能常量定义?别逗我好吗?确切的说,JS当中确实没有常量(ES6中好像有了常量定义的关键字),但是深入一下我们可以发现JS很多不为人知的性质,好好利用这些性质,就会发现一个不一样的JS世界。 首先,在JS当中,...
  • 主要介绍了详解Java编程规约(命名风格、常量定义、代码格式),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • define宏定义和const常量定义之间的区别。
  • Excel9 文件 常量定义

    2013-04-14 08:51:56
    VC操作EXCEL,使用的一些常量定义,方便查找
  • 主要介绍了Go语言中常量定义方法,以实例形式分析了Go语言中常量的定义及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • C语言常量定义

    万次阅读 2019-04-13 18:28:03
    在C中,有两种简单的定义常量的方式: 1.使用#define预处理器 2.使用const关键字 const定义的是变量不是常量,只是这个变量的值不允许改变是常变量!带有类型。编译运行的时候起作用存在类型检查。 define定义...

    在C中,有两种简单的定义常量的方式:

    1.使用#define预处理器

    2.使用const关键字

     

    const 定义的是变量不是常量,只是这个变量的值不允许改变是常变量!带有类型。编译运行的时候起作用存在类型检查。

    define 定义的是不带类型的常数,只进行简单的字符替换。在预编译的时候起作用,不存在类型检查。

    1、两者的区别

    (1) 编译器处理方式不同

    • #define 宏是在预处理阶段展开。
    •  const 常量是编译运行阶段使用。

    (2) 类型和安全检查不同

    •  #define 宏没有类型,不做任何类型检查,仅仅是展开。
    •  const 常量有具体的类型,在编译阶段会执行类型检查。

    (3) 存储方式不同

    • #define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。(宏定义不分配内存,变量定义分配内存。)
    • const常量会在内存中分配(可以是堆中也可以是栈中)。

    (4) const 可以节省空间,避免不必要的内存分配。 例如:

    #define NUM 3.14159 //常量宏
    const doulbe Num = 3.14159; //此时并未将Pi放入ROM中 ......
    double i = Num; //此时为Pi分配内存,以后不再分配!
    double I= NUM; //编译期间进行宏替换,分配内存
    double j = Num; //没有内存分配
    double J = NUM; //再进行宏替换,又一次分配内存!

    const 定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象 #define 一样给出的是立即数,所以,const 定义的常量在程序运行过程中只有一份拷贝(因为是全局的只读变量,存在静态区),而 #define 定义的常量在内存中有若干个拷贝。

    (5) 提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

    (6) 宏替换只作替换,不做计算,不做表达式求解;

    宏预编译时就替换了,程序运行时,并不分配内存。

    展开全文
  • c语言常量定义规则 常量的定义:常量是指在程序运行过程中其值不能被改变的量。 C语言中常量可分为直接常量和符号常量。 直接常量是指直接用具体数据表达的一种形式,直接常量又分为整型常量、实型常量、字符常量和...
  • js常量定义

    2017-07-13 11:22:56
    var Const = (function... var constants = {//定义常量 MILLISEC: 400 } var Test={}; // 定义了一个静态方法 Test.getConstant=function(name){//获取常量的方法 return constants[name]; } return Test; })
    var Const = (function() {  
      var constants = {//定义常量
        MILLISEC: 400
      }
      var Test={};
      // 定义了一个静态方法
      Test.getConstant=function(name){//获取常量的方法
        return constants[name];
      }
      return Test;
    })();

    获取常量:

    var k = Const.getConstant("MILLISEC");
    alert(k)
    js中有一个关键字const,但目前的 浏览器 似乎还不支持,如果一定要定义一些常量,其实可以使用闭包,匿名函数实现常量的定义。

    展开全文
  • 常量定义

    千次阅读 2008-03-30 11:37:00
     程序中如果想让变量的内容自初始化后一直保持不变,可以定义一个常量。 例如,在圆面积计算中经常要用常数丌,此时,通过命名一个容易理解和记忆的名字来 改进程序的可读性,同时在定义中加关键字const,给它规定...
  • 常量值被定义后,在脚本的其他任何地方都不能被改变。 2、常量是全局的 标题常量定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。 *注:与变量不同,常量贯穿整个脚本是自动全局的。 3、定义常量 ...
  • 常量定义 1、【强制】 不允许任何魔法值 ( 即未经预先定义的常量 ) 直接出现在代码中。 反例: String key = "Id#taobao_" + tradeId; cache.put(key, value); // 缓存 get 时,由于在代码复制...
  • 编程中最佳常量定义方法

    千次阅读 2015-10-17 22:55:33
    常量定义最佳方法采用左移和或运算.
  • FPGA中常量定义

    2019-09-14 11:03:17
    Verilog中如何做到C语言中define定义常量的功能 C code: 定义一个常量可用define: 如 define CNT_MAX 200 Verilog module设计: 定义一个常量可用parameter: 如 parameter CNT_MAX = 200; Verilog top如何列化...
  • C语言整形常量定义

    千次阅读 2018-12-04 14:33:37
    C语言整形常量定义 2014年09月01日 19:16:41 atleks 阅读数:3308 在书中看到这样一道题目:用预处理指令#define声明一个常数,用以表明一年中有多少秒。书中给的答案是:   #define SECONDS_PER_YEAR (60 *...
  • 常量定义 HibernateConstant.java TypeMap.java 目录导航 本节内容 进行 Hibernate 的注解定义,常量定义 注解定义 直接模拟 Hibernate 定义几个最常见的注解。 @Entity package co...
  • Java开发规范之常量定义

    千次阅读 2020-03-27 18:06:50
    之前的文章已经介绍过命名规范(点击Java开发规范之命名篇(上)和Java开发规范之命名篇(下)访问),本文将进一步介绍常量定义规范,虽然之前的文章有提到常量规范但也只是限于命名,本篇将讨论常量定义和使用过程...
  • 宏定义和常量定义的区别

    千次阅读 2014-04-06 18:54:01
    C++ 语言可以用const 来定义常量,也可以用#define 来定义常量。但是前者比后者有更多的优点: (1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,...
  • PHP 常量定义以及用法

    千次阅读 2020-07-17 16:26:10
    常量介绍 特点: 不能修改,不能销毁,不能删除,声明常量后,该常量可以在页面的任意处使用 ...const是一个语言结构,编译时要比define快,是为全局常量,可在对象里定义,类中使用,可理解为类常量
  • JavaScript 常量定义

    千次阅读 2018-12-24 16:30:00
    所以定义常量可以是 var CONST = {}; Object.defineProperty(CONST, "A", { value: 1, enumerable: true }); Object.defineProperty(CONST, "B", { value: 2, enumerable: true });   对象常量 ...
  • java map常量定义

    2018-11-22 20:36:00
    Java中定义Map常量,List常量 一般的方式的使用静态代码块。比如: 1 2 3 4 5 publicfinalstaticMap map =newHashMap(); static...
  • php中常量定义数组

    千次阅读 2018-10-08 17:45:20
    在 PHP 5.6之前的php版本不可定义常量数组,PHP 5.6中仅能通过 const 定义常量数组,PHP 7 可以通过 define() 来定义
  • PHP常量定义,文件引入

    千次阅读 2016-08-07 09:39:34
    1.文件引入并进行打印; 2.文件中写入常量方式引入,并打印。 一、先说两个要被引入的文件 ...//定义常量常量键值用纯大写 define("USERNAME", "汪洋哇"); define("PWD", "123"); define("IN
  • c语言 数组定义 符号常量定义

    千次阅读 2017-11-28 20:15:12
    1在定义语句中用一个初始值列表来初始化一个数组:#include #include int main () { int a[5]={34,56,34,23,25}; for(size_t b=0;b;++b){ printf("%5d",a[b]); } system("pause"); return 0; }  如果...
  • 1.const 定义常量和define()定义常量的区别? 希望一个成员变量不被修改 例如圆周率 3.1415926 定义:const 常量名=值; 没有$符 访问:类名 ::常量名 或 接口名::常量名 <?php defined('TEXT'); //检查一...
  • 接口的常量定义和使用

    千次阅读 2019-07-26 14:00:04
    接口当中也可以定义“成员变量”,但是必须使用 public static final 三个关键字进行修饰。 从效果上看,这其实就是接口的【常量】。 格式: public static final 数据类型 常量名称 = 数据值; 注: 一旦...
  • java系统常量定义的几种方式

    千次阅读 2019-05-06 16:39:42
    1、接口定义 public interface ConstantCode { public final static String OK = "ok"; } 接口的成员变量只能是常量,默认修饰符 public static final 看似正好符合常量的使用规范,但是接口的意义是可以被...
  • VBA 全局常量定义

    千次阅读 2019-03-17 22:03:00
    Public Const INDEX As Integer = 16 Public Const RESULT_SHEET As String = "result" Public Const ACTIVE_SHEET_NAME As String = "sheet1" 转载于:https://www.cnblogs.com/onelikeone/p/10549239.html...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 720,863
精华内容 288,345
关键字:

常量定义的格式