首页 > 其他分享 >代码规范(阿里)

代码规范(阿里)

时间:2023-11-07 09:22:54浏览次数:41  
标签:异常 代码 规范 注释 阿里 使用 日志 方法

一、代码规范:

接口中分方法和属性,不加修饰符号如:publc,正确为:void f()
long或Long,统一用Long类型处理
常量按功能分类归类
if/for/while/switch/do等保留字与括号之间都必须加空格
注释的双斜线与注释内容之间有且仅有一个空格
当字符数超过120个时,换行规则:第二行相对第一行缩进4个空格,第三行开始不缩进
方法参数在定义和传入时,多个参数都厚后边必须加空格
所有相同类型的包装类对象之间值的比较,全部使用equals比较,如:Integer的比较用equals
所有实体类必须用包装数据类型
RPC方法(远程调用方法)的返回值和参数必须使用包装数据类型
所有局部变量使用基本数据类型
定义DO/DTO/VO等POJO类时,不设定任何属性默认值
POJO类必须写toString方法
类内方法定义顺序:公有方法或保护方法 > 私有方法 > getter/setter方法
循环体中,字符串的拼接,使用StringBuilder的append方法扩展
集合转数组,使用toArray(T[] array)带参方法,最好入参数组大小和集合元素个数一致
foreach循环中进行元素的remove/add操作,使用Iterator方式,
HashMap使用HashMap(int initialCapacity)初始化
使用set唯一特性去重,避免使用contains方法遍历去重
SimpleDateFormat线程不安全,使用DateUtils工具类更好
少用if-else,可以使用if() {return ;}
高并发情况,避免使用等于作为中断或者退出的条件,可能出现击穿的情况,使用大于或小于的区间判断
循环体中的语句要考虑性能,定义对象、变量、获取数据库连接,try-catch操作,尽量移至循环体外处理
类、类属性、类方法注释使用/*内容/,不使用// xxx方式
所有抽象方法,包括接口中的方法,必须要用javadoc注释,注释包括:返回值、参数、异常、还指出该方法做什么事情,实现什么功能
枚举类型字段都要有注释
代码修改的同时,注释也要修改,包括:参数、返回值、异常、核心逻辑
谨慎注释调代码,后续要回复的代码逻辑可以注释,永久不用的直接删掉,仓库有保存历史代码
注释的要求:1)反应设计思想代码逻辑;2)能够描述业务含义;
好的命名是自解释了
待办事宜用TODO,错误不能工作的用(FIXME)
二、异常日志:

try…catch…异常不要用来做流程控制,条件控制,流程条件这些用if等语句处理,try…catch…只用于处理异常
不大段代码进行try-catch,不利于定位问题
捕获异常要处理它,不处理要把异常抛给调用者
方法返回值可以是null,不强制返回空集合空对象,同事添加注释
防止空指针异常,包装类和基本数据类型,数据库查询结果可能为null,远程调用要进行判断,从session中获取数据要进行空指针判断,一连串调用也容易产生空指针异常
应用内部推荐异常抛出,而跨应用间的rpc考虑使用Result方式,封装isSuccess()方法、错误码、错误信息
避免重复代码,重复使用的要抽取
日志文件至少保存15天,有些异常以“周”为频次发生
使用日志框架slf4j的api,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一
日志输出,使用条件形式输出或者使用占位符的方式,如:if() {logger.debug(“ok”)}
异常信息要包括两类信息:案发现场信息和异常堆栈信息。如果不处理,通过关键字throws往上抛出。如:logger.error(各类参数或对象toString + “_” + e.getMessage(), e)
记录日志时要思考:1)日志有人看吗?2)看到这个日志我能做什么?3)能不能给问题排查带来好处
三、单元测试

单元测试代码放在src/test/java下,保证测试粒度足够小,有助于精确定位问题,每个应用分层都要进行单元测试
单元测试:BCDE,边界值测试(循环边界、特殊取值、特殊时间点、数据顺序),正确的输入,与设计文档相结合,强制错误信息输入
四、安全规约

敏感数据禁止直接展示,要脱敏
注意反序列化注入(把字节流转成对象),转成不可预期的对象执行代码影响程序
五、MySQL数据库
1)建表

表达是与否的字段,必须使用is_xxx的方式命名,数据类型用tinyint,(1表示是,0表示否)
表名和字段名必须使用小写字母或数字,windows下不区分大小写,但linux下区分大小写
表名不适用复数名词
小数类型为decimal,禁止使用float和double,这两个存在精度损失问题,如果存储的数据范围超过decimal,建议将数据拆成整数和小数分开存储
表必备三字段:id(主键,类型bigint), gmt_create(datetime类型)主动创建, gmt_modified(datetime类型)被动更新
表的命名最好加上:业务名称_表的作用(trade_config)
库名和应用名称尽量一致
如果字段使用频率高,字段长度短,名称基本一成不变,可以在相关联的表中冗余存储类目名称(即在另一张表中存同样一个字段的数据),避免关联查询
单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表

标签:异常,代码,规范,注释,阿里,使用,日志,方法
From: https://www.cnblogs.com/lmzh/p/17814287.html

相关文章

  • 解决某站代码必须登录才能复制的问题
    这个事情是通过bookmarklet来实现的,内容很短。都是老中医,没必要给咱出这偏方。将下列内容加入浏览器书签。javascript:eval(atob("dmFyIGM9QXJyYXkuZnJvbSgkKCJjb2RlIikpLm1hcChhPT5hLmlubmVyVGV4dCkuam9pbigiPGJyPiIucGFkRW5kKDUwLCI9IikrIjxicj4iKTt2YXIgYT13aW5kb3cub3Blbig......
  • QT代码实现将图片镜像翻转效果
    QT代码实现将图片镜像翻转效果将图片原图和镜像图合并输出,实现图片镜像功能快速显示效果在UI拖入一个QPushButton,一个QLabel用于缩放显示效果voidWidget::on_pushButton_clicked(){QStringpath=QDir::currentPath();//ui->m_fileEdit->setText(path);//打......
  • 适配器模式和桥接模式代码
    适配器模式和桥接模式代码适配器模式[实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。packagetest8;interfaceCat{voidcatchMouse();}packagetest8;interfaceDog{voidbark();}packagetest8;//具体的猫类class......
  • 如何防止用户阅读Python代码?
    内容来自DOChttps://q.houxu6.top/?s=如何防止用户阅读Python代码?我正在使用Python开发一款软件,该软件将被分发给我雇主的客户。我的雇主希望通过受限时许可证文件来限制软件的使用。如果我们分发.py文件或甚至.pyc文件,那么将很容易(反编译和)删除检查许可证文件的代码。另一......
  • 代码训练营第二十五天(Python)| 216.组合总和III 、17.电话号码的字母组合
    216.组合总和IIIclassSolution:defcombinationSum3(self,k:int,n:int)->List[List[int]]:res=[]self.tracebacking(n,k,1,0,[],res)returnresdeftracebacking(self,targetsum,k,start,now_sum,path,res):......
  • 代码整洁之道笔记1
    一.整洁代码整洁代码的一些特征代码逻辑应该直接了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来;整洁的代码只做好一件事;有单元测试和验收测试;有意义的命名;尽量“少”;两条重要原......
  • 浏览器的网页格式出现问题,并且在别人的电脑上没问题,代码也没问题的解决办法
    https://baijiahao.baidu.com/s?id=1777341926071232063&wfr=spider&for=pc看起来像是浏览器设置的问题,可是浏览器设置为了100%,还是原来的情况。缓存清除了也没有用,最后问了同事才发现是电脑的显示设置原因。直接按鼠标缩放没有用。解决办法:右击桌面,显示设置,找到缩放和布局,将......
  • 抖音辅助软件的开发常见代码!
    在这个信息时代,短视频已经成为人们日常生活中不可或缺的一部分,其中,抖音作为一款备受欢迎的短视频平台,已经成为了广大用户分享和交流的重要渠道。而随着抖音的普及,一些开发者开始关注到控制抖音软件的开发,希望通过自动化工具来帮助用户更高效地管理自己的抖音账号,下面,我们将从代码的......
  • 快手自动点赞软件的收费标准和常用代码!
    在这个信息时代,短视频已经成为人们日常生活中不可或缺的一部分,其中,快手作为一款备受欢迎的短视频平台,已经成为了广大用户分享和交流的重要渠道。而随着快手的普及,一些开发者开始关注到快手自动点赞软件的开发,希望通过自动化工具来帮助用户更高效地管理自己的快手账号,下面,我们将从收......
  • C#代码性能问题
    地址:https://learn.microsoft.com/zh-cn/visualstudio/profiling/performance-insights-concurrentdictionary-count?view=vs-2022 1.ConcurrentDictionary线程安全字典,用于处理多线程注意去Count KeysToArrayValues均具有性能问题2.DateTime.Now 成本高昂,因为它......