入职第一天 代码规范

入职第一天,行业1部,主要负责石油,政府项目等

java代码规范:

命名规范:代码中的不能以_和$开始和结束
禁止使用拼音和英文混合。
类名使用驼峰命名,首字母大写
方法名首字母不大写,驼峰命名
常量名全部大写,单词间下划线隔开
抽象类用Abstract或Base开头;
异常类使用Exception结尾;
测试类使用类名开头Test结尾
boolean命名前不加is
包名统一使用小写,单数
避免不规范的缩写
如果使用到了设计模式,建议在类名中体现出具体模式
接口类中的方法和属性不要加任何修饰符并加上有效的javadoc注释
接口和实现类的命名有2种规则
Service和Dao类暴露的接口,实现类使用Impl的后缀实现
对形容能力的接口名称,取对应的形容词做接口名
枚举类名建议带上Enum后缀,枚举成员名称全大写,单词间使用下划线隔开
各层命名规范:service/dao:
获取单个对象get前缀
获取对个对象list前缀
获取统计值count前缀
插入方法用save前缀
删除方法remove前缀
修改update前缀
数据对象xxxDo xxx为表名
常量值long类型的赋值必须使用大写例如:Long a = 1L;
不能使用一个常量类维护所用常量,应该按常量的功能分类

格式规范:
大括号内为空{};
否则 {
1
} else {
2
}
if / for / while / switch / do 等保留字与左右括号之间必须加空格
任何一个运算符最有必须加一个空格
缩进采用4空格,禁止使用tab
单行字符数不超过120,超出换行,且:
第二行相对第一行缩进4个空格
运算符与下文一起换行
方法调用的点符号与下文一起换行。
多个参数超长,逗号后换行
在括号前不要换行
方法参数在定义和传入时,多个参数逗号后必须加空格
不能使用过时的类和方法
Object的equals方法容易空指针,应该使用常量或确定有值的对象来调用.equal
使用索引访问用String的split方法得到的数组时,需做最后的一个分隔符有无的检查
当一个类有多个工造方法,或者多个同名方法,这些方法应该按顺序放在一起
循环体内,字符串的联接方式使用StringBuilder的append方式进行扩展
声明final的情况:
不需要重新赋值的变量,包含类属性,局部变量
对象参数前final表示不永续修改引用的指向
类方法确定不允许被重写

控制语句
if-else中尽量不适用else
多次if-else使用状态设计模式
循环体内不使用耗时操作
注释规约:
类,类属性,类方法的注释必须使用javadoc规范,使用/*内容/
所有的抽象方法学习要用javadoc注释,除了返回值,参数,异常说明外,还应该指出做什么,实现什么
所有类都必须添加创建者信息
方法内部单行注释,再被注释语句上方另起一行,使用//注释
所有的枚举类型字段必须要有注释,说明每个数据的用途

其他:
使用正则表达式时,利用好其预编译功能
velocity调用POJO类的属性时,建议直接使用属性名取值即可,模板引擎会自动调用。
后台传输给页面的变量必须加$!{}否则当值为空时会直接显现到页面
Math.random()这个方面返回值是double获取整数是使用Random对象的NextInt或者nextLong
获取当前毫秒数System.currentTimeMillis()
获取纳秒数System.nanoTimer()推荐使用Instant类
尽量不要在velocity模板中加入变量声明,逻辑运算及复杂逻辑
任何数据结构的构造和初始化都应该指定大小

异常处理:
不捕获运行时异常
异常不要用来最流程控制,条件控制,以为异常的处理效率比较低
对于非稳定的代码catch尽可能区分异常类型,在做处理
不能再finally块中使用return,finally块中的return返回方法结束执行不再执行try中的return语句
方法返回值可以为null但必须声明为什么会返回null
定义时区分unchecked / checked异常,避免直接使用exception,应该使用自定义异常
使用日志框架slf4j中的api
日志文件至少保存15天,日志输出必须使用条件输出形式或者使用占位符的方式
避免打印重复日志,在log4j.xml中设置additivity = false.

MySQL规约:
表达是否的概念必须使用is _ xx的方式命名,数据类型为unsigned tinyint 非负数必须使用unsigned
表名,字段名必须使用小写字母和数字;禁止出现数字开头,禁止双下滑线中间只出现数字
表名不使用负数名词
禁用关键字
唯一索引名用uk _ 字段名;普通索引用idx_字段名
小数类型用decimal 禁止使用float和double.,如果存储数据擦超出decimal的范围,建议将数据拆成整数和小数分开存储。
如果存储的字符串长度几乎相等,使用char 定长字符串类型
varchar长度不要超过5000,如果存储长度大于5000,定义字段类型为text,独立出来一张表,用主键来对用,避免影响其他字段索引效率。
表必备三个字段,id,gmt _ create,gmt _ modified.
id为主键,类型为unsigned bigint,单表自增,步长为1.gmt_create,gmt_modified的类型均为date_time类型
表的命名最好是加上“业务名称_表的作用”
数据库名与应用名一致
字段允许适当冗余提高性能,冗余字段应遵守:
不是频繁修改的字段
不是varchar等超长字段
单表行数超过500万或者单表容量超过2GB才推荐使用分库分表
业务上具有唯一特性的字段即使是组合字段,也必须建成唯一索引
超过三个表禁止join。需要join的字段,数据类型保持绝对一致;多表关联查询时,保证保证被关联的字段需要有索引。
在varchar字段上简历索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度。
页面搜索严禁左或者全模糊查询,如果需要使用搜索引擎查询。索引文件具有B-Three的最左前缀匹配特性,若果左边的值未确定那么无法使用此索引。
如果有order by 的场景,请注意利用索引的有序性。
利用覆盖索引来进行查询操作,来避免回表操作。
利用延迟关联或者子查询优化超多分页场景
sql性能优化的目标:至少达到range级别,正常ref,最好consts
consts单表中最多只有一个匹配行,在优化阶段即可读取到数据。
ref指的是使用普通的索引
range对索引进行范围搜索
建组合索引的时候,区分度最高的在最左边
创建索引时注意:
误认一个查询要建一个索引
误认索引会消耗空间,严重拖慢更新和新增速度
误认唯一索引一律需要在应用层先查后插
count(*)统计值为null的行
count (distinct col)计算该列除null外的不重复数量
注:count(distinct col 1,col 2)如果其中一列全为null,那么即使另一列有不同的值,也返回0
当一列全为null时sum(m)返回null,所以使用sum()时注意NPE问题:select if(isnull(sum(g)),0,sum(g)) from table;
使用isNULL()来判断字段是否为空,null与任何值比较都为null
在代码中写分页查询逻辑时,若count为0应该直接返回,避免执行后面的分页语句。
不得使用外键与级联,一切外键概念必须在应用层解决。
禁止使用存储过程,存储过程难以调试和扩展,更没有可移植性
数据修定时,删除和修改记录时,要先select避免误删除
in操作尽量避免,无法避免保证in后面的集合元素数量控制在1000以内
全球化需要,所有的字符存储与表示都用utf-8
存储表情时,使用utfmb 4来存储

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • 来源与:阿里云栖 禁止用于商业用途 ps:如果需要电子书 评论你们邮箱 我会发给你们 下面感觉还是有点乱 目录 一...
    小向资源网阅读 7,570评论 0 12
  • 关上门,打开音箱,你可曾听过这样的歌 吉他像棉花糖,钢琴的白键是牛奶云朵,黑键是太妃糖 听起来像是巧克力在嘴里融化...
    FO_阅读 324评论 0 2
  • cocos2d-x技术群新群:117871561c++技术交流群:593010226第一种:高德定位的接口 第二种:
    亮亮同学阅读 509评论 0 0