编程规约 - 常量定义
修改:第 3 项、第 5 项
【强制】不允许出现任何魔法值 ( 即未经定义的常量 ) 直接出现在代码中。
反例:String key =" Id # taobao _"+ tradeId; cache . put(key , value);
【强制】 long 或者 Long 初始赋值时,必须使用大写的 L ,不能是小写的 l ,小写容易跟数字
1 混淆,造成误解。
说明:Long a = 2 l;
写的是数字的 21,还是 Long 型的 2?
修改项:第 3 项
添加项:第 11 项
【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
反例:
_name / __name / $Object / name_ / name$ / Object$
【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式
也要避免采用。
反例:
DaZhePromotion [ 打折 ] / getPingfenByName() [ 评分 ] / int 某变量 = 3
正例:
alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。
已经同步最终版
首先,这肯定是一个非常重大的消息。绝对是Java程序员的福利啊,终于结束了一个公司一套规范的编程生涯。这对业界规范来说也起到了很好的推动作用。俗话说:无规矩不方圆,生活中各种法律道德的约束,出门还有交规的限制。相信小伙伴们一定经历过 坑,有了这本规范手册,你是不是该好好学习一下呢?
内容分五大类,总共19章节:
索引 | 一级目录 | 二级目录 |
---|---|---|
一 | 编程规约 | 命名规约、常量定义、代码格式、OOP规约、集合处理、并发处理、控制语句、注释规约、其它 |
二 | 异常日志 | 异常处理、日志规约 |
三 | 单元测试 | 无 |
四 | 安全规约 | 无 |
五 | MySQL数据库 | 建表规约、索引规约、SQL语句、ORM映射 |
六 | 工程结构 | 应用分层、二方库依赖、服务器 |
原文地址:查看原文
之前说过在Android中关于enum的使用,对内存的占用比较大,所以就了解了一下内存占用方面,基本上大同小异,下面是我觉得比较全面的描述,重新排版、整理,如果有时间,希望你能好好了解一下。
下面的内容深入分析并验证了不同Java对象占用内存空间大小的情况。对于不同的jvm实现,Java对象占用的内存空间大小可能不尽相同,本文主要分析HotSpot jvm中的情况,实验环境为64位window10系统、JDK1.8,使用JProfiler进行结论验证。
Java对象的内存布局包括
在64位机器上,默认不开启指针压缩(-XX:-UseCompressedOops)的情况下,对象头占用12bytes,开启指针压缩(-XX:+UseCompressedOops)则占用16bytes。
原生类型(primitive type)的内存占用如下:
Primitive Type | Memory Required(bytes) |
---|---|
byte, boolean | 1 byte |
short, char | 2 bytes |
int, float | 4 bytes |
long, double | 8 bytes |
注:对象引用(reference)类型在64位机器上,关闭指针压缩时占用4bytes, 开启时占用8bytes
enum在Android应不应该使用?
关于enum,Android Developers中这样一句话:
enums often require more than twice as much memory as static constants. You should strictly avoid using enums on Android
就是说enum比静态常量两倍多的内存占用,应该尽量减少使用。当然了,这里说的是减少并不是禁止,要知道,enum的产生,注定其必定有适合的应用场景,而且它带来的代码简洁性和可读性,都是不可小觑的。
所以,如果在不使用enum的情况下是有替代方案的:
第一种没什么说的,下面就重点说一说第二种,就是通过注解的形式来代替,注解是由 support 包提供的功能,如果使用,需要添加 support 包到module。