↖  Java開發手冊-阿里巴巴-嵩山版-12:其他及日常日志..


-loading- -loading- -loading-

2020-12-26 , 1525 , 104 , 175

听音频 🔊 . 看视频 🎦

(十一)其他


1. 【强制】在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。
说明:不要在方法体内定义:Pattern pattern = Pattern.compile(“规则”);

2. 【强制】避免用Apache Beanutils进行属性的copy。 

说明:Apache BeanUtils性能较差,可以使用其他方案比如Spring BeanUtils, Cglib BeanCopier,注意均是浅拷贝。


3. 【强制】velocity调用POJO类的属性时,直接使用属性名取值即可,模板引擎会自动按规范调用POJO的getXxx(),如果是boolean基本数据类型变量(boolean命名不需要加is前缀),会自动调用isXxx()方法。 

说明:注意如果是Boolean包装类对象,优先调用getXxx()的方法。


4. 【强制】后台输送给页面的变量必须加$!{var}——中间的感叹号。 说明:如果var等于null或者不存在,那么${var}会直接显示在页面上。


5. 【强制】注意 Math.random() 这个方法返回是double类型,注意取值的范围 0≤x<1(能够取到零值,注意除零异常),如果想获取整数类型的随机数,不要将x放大10的若干倍然后取整,直接使用Random对象的nextInt或者nextLong方法。

6. 【推荐】不要在视图模板中加入任何复杂的逻辑。 

说明:根据MVC理论,视图的职责是展示,不要抢模型和控制器的活。


7. 【推荐】任何数据结构的构造或初始化,都应指定大小,避免数据结构无限增长吃光内存。

8. 【推荐】及时清理不再使用的代码段或配置信息。

说明:对于垃圾代码或过时配置,坚决清理干净,避免程序过度臃肿,代码冗余。

正例:

-loading- -loading--loading-


对于暂时被注释掉,后续可能恢复使用的代码片断,在注释代码上方,统一规定使用三个斜杠(///)来说明注释掉代码的理由。如:

UfqiLong

public static void hello() {

/// 业务方通知活动暂停

// Business business = new Business();

// business.active();

System.out.println("it's finished");

}


----


二、異常日志


(一)錯誤碼


 1. 【强制】错误码的制定原则:快速溯源、沟通标准化。
说明: 错误码想得过于完美和复杂,就像康熙字典中的生僻字一样,用词似乎精准,但是字典不容易随身携带并且简单易懂。
正例:错误码回答的问题是谁的错?错在哪?
1)错误码必须能够快速知晓错误来源,可快速判断是谁的问题。
2)错误码必须能够进行清晰地比对(代码中容易equals)。
3)错误码有利于团队快速对错误原因达到一致认知。


2. 【强制】错误码不体现版本号和错误等级信息。
说明:错误码以不断追加的方式进行兼容。错误等级由日志和错误码本身的释义来决定。

3. 【强制】全部正常,但不得不填充错误码时返回五个零:00000。
4. 【强制】错误码为字符串类型,共5位,分成两个部分:错误产生来源+四位数字编号。
说明:错误产生来源分为A/B/C,
A表示错误来源于用户,比如参数错误,用户安装版本过低,用户支付超时等问题;
B表示错误来源于当前系统,往往是业务逻辑出错,或程序健壮性差等问题;
C表示错误来源于第三方服务,比如CDN服务出错,消息投递超时等问题;
四位数字编号从0001到9999,大类之间的步长间距预留100,参考文末附表3。

5. 【强制】编号不与公司业务架构,更不与组织架构挂钩,以先到先得的原则在统一平台上进行,审批生效,编号即被永久固定。
6. 【强制】错误码使用者避免随意定义新的错误码。
说明:尽可能在原有错误码附表中找到语义相同或者相近的错误码在代码中使用即可。


7. 【强制】错误码不能直接输出给用户作为提示信息使用。
说明:堆栈(stack_trace)、错误信息(error_message)、错误码(error_code)、提示信息(user_tip)是一个有效关联并互相转义的和谐整体,但是请勿互相越俎代庖。
8. 【推荐】错误码之外的业务独特信息由error_message来承载,而不是让错误码本身涵盖过多具体业务属性。
9. 【推荐】在获取第三方服务错误码时,向上抛出允许本系统转义,由C转为B,并且在错误信息上带上原有的第三方错误码。


-loading- -loading--loading-


UfqiLong

10. 【参考】错误码分为一级宏观错误码、二级宏观错误码、三级宏观错误码。 

说明:在无法更加具体确定的错误场景中,可以直接使用一级宏观错误码,分别是:A0001(用户端错误)、B0001(系统执行出错)、C0001(调用第三方服务出错)。 

正例:

调用第三方服务出错是一级,中间件错误是二级,消息服务出错是三级。


11. 【参考】错误码的后三位编号与HTTP状态码没有任何关系。 

12. 【参考】错误码有利于不同文化背景的开发者进行交流与代码协作。 

说明:英文单词形式的错误码不利于非英语母语国家(如阿拉伯语、希伯来语、俄罗斯语等)之间的开发者互相协作。 


13. 【参考】错误码即人性,感性认知+口口相传,使用纯数字来进行错误码编排不利于感性记忆和分类。 

说明:数字是一个整体,每位数字的地位和含义是相同的。 

反例:一个五位数字12345,第1位是错误等级,第2位是错误来源,345是编号,人的大脑不会主动地拆开并分辨每位数字的不同含义。


英国伦敦UK London城市风景-人文景观与自然风光和谐交融-3

+手冊 +日志 +嵩山 +错误码 +错误

本页Url

↖回首页 +当前续 +尾续 +修订 +评论✍️


👍53 仁智互见 👎3
  • 还没有评论. → +评论
  • -loading- -loading- -loading-


    🔗 连载目录

    🤖 智能推荐

    + 张爱玲 张爱玲
    AddToFav   
    新闻 经典 官宣