2018年6月5日,《阿里巴巴Java开发手册》再次升级代码规范,新增了16条设计规约!

《阿里巴巴Java开发手册》是阿里内部Java工程师所遵循的开发规范,涵盖编程规约、单元测试规约、异常日志规约、MySQL规约、工程规约、安全规约等,这是近万名阿里Java技术精英的经验总结。

规范下载链接:https://102.alibaba.com/downloadFile.do?file=1528185610558/JAVA1.4.pdf

为何要新增设计规约?

脍炙人口的唐诗“两个黄鹂鸣翠柳,一行白鹭上青天”,清爽直接,简明易懂。可读性好的代码也是让人陶醉的,那么如何写出可读性的代码?

代码的可读性是指代码让人容易阅读、理解、调试、可预料的程度。提高代码的可读性可以为代码阅读者节约时间和精力,提升团队协作效率。熟悉和遵守《阿里巴巴JAVA开发手册》的编程风格,那只是“标”,而代码可读性的“本”可以追溯到软件设计阶段。试想一下如果发型师没有设计好,不用指望能剪出一个“可读性”比较好的你。

设计是一种梦想和追求,谁都喜欢有气质的女神,谁都会欣赏有设计感的代码。你可能会问,什么是设计感?就像烧饭这件事,村姑和御厨都会烧,都能吃饱,但是菜品的美感、口感,有本质的区别。代码到艺术层面上,能够体现出来非常好的扩展性、解耦性。代码就象积木一样,换一个搭法,也是OK的,结构清晰,不用担心拔出萝卜带出泥。

何为16条?

设计规约是根据阿里巴巴实际项目架构经验提炼而成,共16条。设计规约主要从UML图和架构设计原则来规定比较基础的软件设计理念,并且明确了超过什么样的阈值需要以什么样的方式来呈现设计思维。根据阿里巴巴内部的反馈声音来看,对于数据底层结构、状态图、以及敏捷开发相关的三条,共鸣感最强,那么详细点评一下:

数据底层结构

底层数据结构属于大厦的地基工程,如果地基不稳,那么上层去修正难度是相当大的,甚至是无法修正。所以设计规约提倡,存储方案和底层数据结构的设计获得评审一致通过,并沉淀成为文档。有缺陷的底层数据结构容易导致系统风险高,可扩展性差,重构成本因历史数据迁移、系统平滑过渡也会陡然增加,所以,存储方案和数据结构需要认真地进行设计和评审,生产环境提交执行后,需要进行double check。评审内容包括存储介质选型、表结构设计能否满足技术方案、存取性能和存储空间能否满足业务发展、表或字段之间的辩证关系、字段名称、字段类型、索引等;数据结构变更(如在原有表中新增字段)也需要进行评审通过后上线。

状态图

业务对象状态相关的编码错误是引起线上故障的一个重要导火索。多一个状态,少一个状态,如果没有历史设计文档沉淀,那么都是灾难性的。如果某个业务对象的状态超过3个,使用状态图来表达并且明确状态变化的各个触发条件。状态图的核心是对象状态,首先明确对象有多少种状态,然后明确两两状态之间是否存在直接转换关系,再明确触发状态转换的条件是什么。淘宝订单状态有已下单、待付款、已付款、待发货、已发货、已收货等。比如已下单与已收货这两种状态之间是不可能有直接转换关系的。

敏捷开发

敏捷开发是当下流行的一种开发模式,相比传统软件生产流程,更加快速地交付。但是,敏捷开发适合于信任度好、理解力强、技术水平相对一致的创业型团队。但是在很多公司敏捷成为一个抓进度的拔苗助长式的借口。所以避免如下误解:敏捷开发 = 讲故事 + 编码 + 发布。敏捷开发是快速交付迭代可用的系统,省略多余的设计方案,摒弃传统的审批流程,但核心关键点上的必要设计和文档沉淀是需要的。

写在最后

《阿里巴巴Java开发手册》的使命,在于帮助工程师脱离繁琐,重燃技术激情。业务会变、玩法会变、需求会变,做好代码质量的决心永不会变。

不断打磨技术,成为更好的自己,我们共勉。

《阿里巴巴JAVA开发手册》发布详尽版,新增16条设计规约相关推荐

  1. 阿里巴巴Java开发手册(详尽版)-个人未注意到的知识点

    阿里巴巴Java开发手册(详尽版)-个人未注意到的知识点 阿里巴巴Java开发手册(详尽版)1 一.编程规约 (一) 命名风格 [强制]代码中的命名只可用英文方式 [强制]类名使用UpperCamel ...

  2. 新增16条设计规约!阿里巴巴Java开发手册(详尽版)开放下载!

    2019独角兽企业重金招聘Python工程师标准>>> <阿里巴巴Java开发手册>是阿里内部Java工程师所遵循的开发规范,涵盖编程规约.单元测试规约.异常日志规约.M ...

  3. 《阿里巴巴Java开发手册(正式版)》--MySQL规约

    (一)建表规约 1.[强制]表达是与否概念的字段,必须使用 is_xxx的方式命名,数据类型是 unsigned tinyint( 1表示是,0表示否),此规则同样适用于 odps建表. 说明:任何字 ...

  4. 《阿里巴巴Java开发手册(正式版)》--编程规约

    (一)命名规约 1.[强制] 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name / __name / Object/name/nameObject / na ...

  5. 阿里巴巴Java开发手册(黄山版)

    阿里巴巴 Java 开发手册(黄山版) 链接:https://pan.baidu.com/s/1iKsXlq1DSbePLvuysYbA4A 提取码:yyds 阿里巴巴将 Java 开发手册 从 1. ...

  6. 阿里巴巴java开发手册(泰山版)在线阅览

    阿里巴巴java开发手册(泰山版)在线查看 阿里云华山版及以前版本在线阅览地址 华山版在线阅览用IE浏览器打开链接 https://alitech-private.oss-cn-beijing.ali ...

  7. 最新版阿里巴巴Java开发手册(嵩山版)-附免费下载链接

    2020年8月3日,阿里技术官方宣布,阿里巴巴<Java 开发手册(嵩山版)>现已正式发布. <阿里巴巴 Java 开发手册>始于阿里内部规约,在全球Java开发者共同努力下, ...

  8. 最新《阿里巴巴Java开发手册》华山版、泰山版、嵩山版速来领取!

    微信公众号原文链接:戳此阅读 简介: 阿里巴巴Java开发手册,来自阿里集团的智慧与经验,用血淋淋的故障换来的总结阿里经济体全球技术开发准则. 文章线路图 手册简介 历代版本 获取方式 手册简介 &l ...

  9. 阿里巴巴Java开发手册简介(终极版、华山版、泰山版)(附下载地址)

    文章目录 一.简介 二.下载地址 一.简介 <Java 开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃 ...

  10. java开发手册泰山版阿里巴巴_阿里巴巴Java开发手册(泰山版)个人阅读精简

    java开发规范个人精简 根据自己的经验进行适当提炼重要的,需要的. 阅读中.... 编程规约 命名风格 类名首字母大骆驼拼写法.方法.参数.变量名小骆驼拼写法 LeiMing bianLiang f ...

最新文章

  1. 有多少状元能够成才?(zz)
  2. BPW34F红外光电传感器
  3. 在eclipse使用map reduce编写word count程序生成jar包并在虚拟机运行的步骤
  4. Mach-O 二进制文件解析
  5. Python Matplotlib 中文显示参数设置
  6. 推荐一个优化分页查询的办法(分页数很大的情况)
  7. JQuery validate表單驗證
  8. rocketmq怎么保证数据不会重复_rocketmq如何保证消息不丢失
  9. 线程id 获取线程名称_016 线程及初步网络编程
  10. asp.net core系列 67 Web压力测试工具WCAT
  11. android改变textview文字,如何在Android TextView中更改文本
  12. 最常用计算机文件后缀名,windows系统文件后缀(扩展名)简单介绍,电脑知识普及...
  13. T00LS专访白帽子:carry_your和带头大哥【T00ls人物专访第八期】
  14. 23个平台短视频去水印解析下载接口
  15. c/c++ utf-8与gbk的互相转化
  16. C#使用MathNet的矩阵与向量运算示例
  17. 中国柔性材料行业发展建议及竞争态势研究报告2021年版
  18. 仿么么街货源客模板源码 蚂蚁分类信息系统 带安装教程
  19. My View on Life Value 人生价值何在?
  20. x50pro怎么升级鸿蒙系统,被央视点赞的vivo X50 Pro拍照如何?实测告诉你

热门文章

  1. 我关注了389个公众号,这10个牛XXX的推荐给你!
  2. 如何使用Python玩转PDF各种骚操作?
  3. python3.6.3安装过程_python3.6.3安装图文教程 TensorFlow安装配置方法
  4. java中如何检查字符串都是数字_如何在Java中检查字符串是否为数字?
  5. 自定义标签报 无法为TAG [my2:hello]加载标记处理程序类[null]
  6. 闵可夫斯基和(Mincowsky sum)
  7. java课程之团队开发冲刺1.4
  8. python实现跨excel的工作表sheet之间的复制
  9. C#语言基础——结构体和枚举类型
  10. tinyxml学习2