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

摘要:2018年6月,《阿里巴巴Java开发手册》再次刷新代码规范认知,我们新增了16条设计规约!现免费开放下载,不可错过!


《阿里巴巴Java开发手册》是阿里内部Java工程师所遵循的开发规范,涵盖编程规约、单元测试规约、异常日志规约、MySQL规约、工程规约、安全规约等,这是近万名阿里Java技术精英的经验总结,并经历了多次大规模一线实战检验及完善。这是阿里回馈给Java社区的一份礼物,希望能够帮助企业开发团队在Java开发上更高效、容错、有协作性,提高代码质量,降低项目维护成本。

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

点此免费下载《阿里巴巴Java开发手册》(详尽版)!


为何要新增设计规约?

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

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

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


何为16条?

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

数据底层结构

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

状态图

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

敏捷开发

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

写在最后

我们相信技术之心生生不息,也相信好的规约值得被传播和应用。

本次新增的不单是16条新的设计规约,还是千万阿里人的技术之心。

我们也期待大家的意见,持续完善,

那么说说大家眼里的软件设计中遇到的坑吧。

本文作者:孤尽

原文链接

本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

受困于敏捷开发的数据与架构?肿么办?

戳蓝字“CSDN云计算”关注我们哦!译|Lorraine Lo文|Isaac Sacolick来源|InfoWorld网站如今企业强调敏捷开发不是一天两天,但在此过程中敏捷团队通常都会面临的一大挑战就是如何定义以及遵循开发中数据架构的模式和标准这一系列问题。人们之所以认为推动数…

Vue + Spring Boot 项目实战(三):使用IntelliJ IDEA快速生成 Vue.js 项目

文章目录一、使用idea Vue插件生成项目结构1.1. Create New Project1.2. 设置项目地址1.3. 确认项目名称1.4. 项目描述1.5. 作者信息1.6. 编译模板1.7. 安装路由二、安装node_modules模块三、启动项目四、Vue 项目结构分析4.1. 概览4.2. index.html4.3. App.vue4.4. main.js4.5…

沙漠种水稻,88岁的袁隆平又创造奇迹!他参与的“袁米”还有个大计划

摘要: 今年88岁的袁隆平说,他退休之前想看到两件事情:一件是杂交稻大面积亩产1200公斤,另一件是海水稻研发成功。 这几天,关于海水稻的话题再次成为热点。 上周,在两院院士大会上,海水稻和杂交水…

八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线

摘要: ApsaraDB for HBase2.0于2018年6月6日即将正式发布上线啦! 它是基于社区HBase2.0稳定版的升级,也是阿里HBase多年的实践经验和技术积累的持续延伸,全面解决了旧版本碰到的核心问题,并做了很多优化改进&#xff0…

oracle 12.2 启用分片,关于Oracle Sharding,你想知道的都在这里

编辑手记:随着Oracle12.2的发布,Sharding技术也逐渐变得越来越强大,关于Sharding,你所关心的问题的答案,可能都在这里。注:本文来自Oracle FAQ文档翻译相关阅读:什么是Oracle ShardingOracle Sharding是为O…

看完这篇还不会kafka,我跪榴莲!

戳蓝字“CSDN云计算”关注我们哦!Kafka 对外使用 Topic 的概念,生产者往 Topic 里写消息,消费者从中读消息。为了做到水平扩展,一个 Topic 实际是由多个 Partition 组成的,遇到瓶颈时,可以通过增加 Partiti…

Vue + Spring Boot 项目实战(四):前后端结合测试(登录页面开发)

前面我们已经完成了前端项目 DEMO 的构建,这一篇文章主要目的如下: ①打通前后端之间的联系,为接下来的开发打下基础 ②登录页面的开发(无数据库情况下) 文章目录一、后端项目创建1.1. 项目/包名称1.2. web依赖1.3. 运…

探秘盒马机器人餐厅:老外目瞪口呆,90岁奶奶狂点赞

摘要: “菜来了。”一台小车停在餐桌旁,“张开”透明盒盖,瓮声瓮气的机器声提示取餐,它的“肚子”里,是一条热腾腾的清蒸鱼。 刚刚点菜的顾客兴奋地宣布,从下单到拿到菜,只花了11分钟。此时不到…

【漫画】AI小猪的一生

摘要: 6月7日,在上海云栖大会上,阿里云发布ET农业大脑。希望将人工智能与农业深入结合,目前已应用于生猪养殖、苹果及甜瓜种植,具备数字档案生成、全生命周期管理、智能农事分析、全链路溯源等功能。AI可以记录猪完整的…

苹果手机数据线充不了电_手机充电器充不了电?其实4招就能解决

无论科技有多么发达,智能手机怎么样变化,至少就目前使用的智能手机上来看,使用手机就离不开"电"。哪怕是即将开售的折叠手机,也还是需要充电才能够正常使用。所以说,对于是手机而言,"有电&q…

Vue + Spring Boot 项目实战(五):数据库的引入

文章目录一、引入数据库1.安装数据库2. 安装mysql3. MySQL客户端4. .使用 Navicat 创建数据库与表二、使用数据库验证登录1.项目相关配置2.登录控制器2.1. User 类2.2. UserDAO2.3. UserService2.4. LoginController2.5. 测试一、引入数据库 1.安装数据库 官网地址&#xff1…

三招提升数据不平衡模型的性能(附python代码)

摘要: 本文的主要目标是处理数据不平衡问题。文中描述了用来克服数据不平衡问题的三种技术,分别是集成交叉验证、类别权重以及过大预测 。对于深度学习而言,数据集非常重要,但在实际项目中,或多或少会碰见数据不平衡问…

为什么说「中台」程序员将来会最值钱?

戳蓝字“CSDN云计算”关注我们哦!今年在国内互联网公司中真的是很流行中台这个概念,不,是非常流行,是相当流行。作为程序员真的非常有必要了解一下。国内中台概念的由来国内中台的这个概念最早是由阿里巴巴提出来的。据说故事是这…

varclus变量聚类对变量有啥要求_互助问答第208期:递归的双变量probit模型问题...

递归的双变量probit模型的stata命令是什么?比如二元被解释变量为y1,内生的二元变量为t1,x1和x2是其他外生协变量,iv1为内生二元解释变量的工具变量,那么,递归双变量probit模型是否可以写为:bipr…

Vue + Spring Boot 项目实战(六):使用 Element 辅助前端开发

文章目录一、安装并引入 Element1.安装 Element2.引入 Element二、优化登录页面1.使用 Form 组件2.添加样式3.设置背景4.完整代码之前我们实现了登录功能,但不得不说登录页面实在是太简陋了。在这个看脸的社会,如果代码写的烂,界面也做得不好…

不止 5G 和鸿蒙,华为最新大招,扔出 AI 计算核弹

戳蓝字“CSDN云计算”关注我们哦!华为发布全世界最快AI产品,集成1024颗业内最强芯片,训练ResNet-50只需59.8秒。近日,华为全联接大会开幕,推出又一重量级AI产品Atlas900。此前接受外媒采访时,任正非就已经预…

阿里90后工程师利用ARM硬件特性开启安卓8终端“上帝模式”

摘要: 本文以安卓8终端为载体,介绍阿里安全潘多拉实验室成员研究并提出的内核空间镜像攻击利用技巧。文/图 阿里安全潘多拉实验室 团控编者按:团控,阿里安全潘多拉实验室研究人员,该实验室主要聚焦于移动安全领域&…

神龙X-Dragon,这技术“范儿”如何?

戳蓝字“CSDN云计算”关注我们哦!在CSDN总部会议室,阿晶首次见到了阿里云智能研究员、弹性计算技术负责人张献涛——这位不仅仅在阿里云智能内部,在业内也是响当当的虚拟化技术大牛。现在回想起来,当时聊了没两句,阿晶…

python 如何判断一个函数执行完成_三步搞定 Python 中的文件操作

当程序运行时,变量是保存数据的好方法,但变量、序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中。Python 提供了内置的文件对象,以及对文件…

一位资深程序员大牛给予Java初学者的学习路线建议

摘要: java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了&#x…