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

近期,《阿里巴巴Java开发手册》推出详尽版,新增16条设计规约,让优雅的代码触手可及。下面让我们一起来了解。

《阿里巴巴Java开发手册》最新详尽版下载:

https://102.alibaba.com/downloadFile.do?file=1528269849853/Java_manual.pdf

该书是阿里内部Java工程师所遵循的开发规范,涵盖编程规约、单元测试规约、异常日志规约、MySQL规约、工程规约、安全规约等,让我们一起码出高效、码出质量。

为何要新增设计规约?

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

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

何为16条?

万事万物皆有法则,这种理论层面的抽象来自于实践,同时理论指导下的实践又不断地修正或夯实理论。软件设计有七大基础原则,分别是:单一原则、开闭原则、里氏代换原则、组合复用原则、接口隔离原则、 依赖倒置原则、迪米特原则,这些原则指导着实际代码生产中的模块、类、方法的实现。

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

数据底层结构

底层数据结构属于大厦的地基工程,如果地基不稳,那么上层去修正难度是相当大的,甚至是无法修正。所以设计规约提倡,存储方案和底层数据结构的设计获得评审一致通过,并沉淀成为文档。有缺陷的底层数据结构容易导致系统风险高,可扩展性差,重构成本因历史数据迁移、系统平滑过渡也会陡然增加,所以,存储方案和数据结构需要认真地进行设计和评审,生产环境提交执行后,需要进行double check。

评审内容包括存储介质选型、表结构设计能否满足技术方案、存取性能和存储空间能否满足业务发展、表或字段之间的辩证关系、字段名称、字段类型、索引等;数据结构变更(如在原有表中新增字段)也需要进行评审通过后上线。

状态图

业务对象状态相关的编码错误是引起线上故障的一个重要导火索。多一个状态,少一个状态,如果没有历史设计文档沉淀,那么都是灾难性的。如果某个业务对象的状态超过3个,使用状态图来表达并且明确状态变化的各个触发条件。

状态图的核心是对象状态,首先明确对象有多少种状态,然后明确两两状态之间是否存在直接转换关系,再明确触发状态转换的条件是什么。淘宝订单状态有已下单、待付款、已付款、待发货、已发货、已收货等。比如已下单与已收货这两种状态之间是不可能有直接转换关系的。

敏捷开发

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

写在最后

我们相信技术之心生生不息,也相信好的规约值得被传播和应用。本次新增的不单是16条新的设计规约,还是阿里技术人的情怀与追求。我们也期待大家的意见,持续完善《阿里巴巴Java开发手册》。

每天一篇技术文章,

看不过瘾?

关注“阿里巴巴机器智能”公众号

发现更多AI干货。

如何提升代码可读性?阿里发布16条设计规约相关推荐

  1. 《阿里巴巴JAVA开发手册》发布详尽版,新增16条设计规约

    2018年6月5日,<阿里巴巴Java开发手册>再次升级代码规范,新增了16条设计规约! <阿里巴巴Java开发手册>是阿里内部Java工程师所遵循的开发规范,涵盖编程规约.单 ...

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

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

  3. 提升代码可读性的 10 个技巧

    具有较强可读性的代码,能帮助你调试程序,不让自己活得太累. 代码可读性是计算机编程领域中普遍存在的问题.这也是我们成为开发者首先要学习的事情之一.本文会详细介绍在编写强可读性代码时最佳实践中最重要的一 ...

  4. 提升代码内外部质量的22条经验

    2019独角兽企业重金招聘Python工程师标准>>> 本文主要关注代码的内部和外部质量,编程的价值观,代码质量的评估标准,整洁代码的匠艺以及如何维护已有的代码. 外部质量:用户所能 ...

  5. 【Python基础】在pandas中使用pipe()提升代码可读性

    1 简介 我们在利用pandas开展数据分析时,应尽量避免过于「碎片化」的组织代码,尤其是创建出过多不必要的「中间变量」,既浪费了「内存」,又带来了关于变量命名的麻烦,更不利于整体分析过程代码的可读性 ...

  6. 提升代码可读性,减少if-else的几个小技巧

    "我正在参加「掘金·启航计划」" 前言

  7. 程序员看过来:阿里毕玄提升代码能力的4段经历

    简介:对于程序员而言,我始终认为代码是展现能力的关键.一个优秀程序员写的代码,和一个普通程序员写的代码是很容易看出差别的,代码是展示程序员硬实力的名片.如何提升写代码的能力,始终是一个关键的话题,不过 ...

  8. Java技术:收集16 条 yyds 的代码规范,值得一读!

    今天给大家分享关于Java技术中16 条 yyds 的代码规范,读完肯定会有帮助! 一.MyBatis 不要为了多个查询条件而写 1 = 1 当遇到多个查询条件,使用where 1=1 可以很方便的解 ...

  9. 【转】阿里毕玄:提升代码能力的4段经历【无它就是实干】

    对于程序员而言,我始终认为代码是展现能力的关键.一个优秀程序员写的代码,和一个普通程序员写的代码是很容易看出差别的,代码是展示程序员硬实力的名片.如何提升写代码的能力,始终是一个关键的话题,不过很遗憾 ...

最新文章

  1. 【linux】Valgrind工具集详解(十):SGCheck(检查栈和全局数组溢出)
  2. Caffe + CUDA8.0 + CuDNNv5.1 + OpenCV3.1 + Ubuntu14.04 配置参考文献 ---- Wang Xiao Anhui University CVP
  3. C语言作业二选择结构,C语言第二次作业参考答案选择结构.pdf
  4. 向量空间 Vector Space -- 推荐系统
  5. php图片处理之本地图片转base64格式上传
  6. tar.xz压缩工具使用(转)
  7. Extjs利用iframe无弹窗导出下载文件
  8. Java集合之map 集合使用
  9. php职业性格测试,三个职业测试方法,助你选择适合你的工作(附测试链接)
  10. DBUtils和连接池的笔记和总结
  11. 第一讲 数系发展史纲
  12. 网络安全防护之主机病毒查杀
  13. 如何回复审稿人的意见?(总结)
  14. Android打字机动画,Android自定义View实现打字机效果
  15. 代码进行insmod/rmmod操作
  16. JavaSrcipt学习(学习打卡Day7)
  17. ffmpeg生成hls点播
  18. 计算机毕业设计——基于HTML电商购物商城项目设计与实现-快购优品 带论文6500字 答辩ppt
  19. 宠物店小程序开发线上预约寄养洗护商城
  20. 瑞丽评出的年度最好用化妆品~~转了以后就不用找啦

热门文章

  1. 写 Python 爬虫 5 年,复制粘贴一直是我赖以生存的核心技能,直到我看到这些腾讯阿里大佬们的技术公众号,太强了...
  2. 你写的 Python 代码可以更“瘦”
  3. 大熊猫“认脸”神器!扫一扫,人脸识别认证卖萌大熊猫
  4. 计算机课听课评议,听课优缺点评语
  5. 电脑小米路由器设置虚拟服务器,小米路由器在Win7系统中设置网络映射教程
  6. linux静态编译libcurl,libcurl嵌入式Linux移植
  7. win7下nsis打包exe安装程序教程
  8. 软件工程导论第六周作业:关于servlet,jquery,ExtJs,Spket
  9. imoocLinux环境变量配置文件笔记
  10. jQuery动画高级用法(上)——详解animation中的.queue()函数