前言


献给开发者们!《#阿里巴巴java开发手册#》实体书开启预售!书中独家披露设计规约,根据阿里巴巴一线架构设计经验沉淀而成,旨在帮助研发人员准确地度量是否需要定向的设计方案。


本手册的愿景是码出高效,码出质量。它结合作者的开发经验和架构历程,提炼阿里巴巴集团技术团队的集体编程经验和软件设计智慧,浓缩成为立体的编程规范和最佳实践。众所周知,现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程相关的知识点,其他维度的知识点也会影响软件的最终交付质量,比如,数据库的表结构和索引设计缺陷可能带来软件的架构缺陷或性能风险;单元测试的失位导致集成测试困难;没有鉴权的漏洞代码易被黑客攻击等。所以,本手册以开发者为中心视角,划分为编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约七个维度,每个条目下有相应的扩展解释和说明,正例和反例,全面、立体、形象地帮助到开发者的成长和团队代码规约文化的形成。


从严格意义上讲,本手册跨越了Java语言本身,明确作为一名合格开发者应该具备的基本素质,因此本手册适合计算机相关行业的管理者和研发人员、高等院校的计算机专业师生、求职者等阅读,希望成为大家如良师益友般的工作手册、工具字典和床头书。


如果有兴趣了解更多,可第一时间上天猫购得此书,参与文末互动还有机会免费获得作者签名版图书!

我们也有幸邀请了作者孤尽,请他来聊聊规约背后的故事与初心。

class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=c056193oi6c&width=670&height=376.875&auto=0" style="display: block; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670" src="http://v.qq.com/iframe/player.html?vid=c056193oi6c&width=670&height=376.875&auto=0"/>

孤尽说:


别人都说我们是搬砖的码农,但我们知道自己是追求个性的艺术家。也许我们不会过多在意自己的外表和穿着,但在我们不羁的外表下,骨子里追求着代码的美、系统的美,代码规范其实就是一个对程序美的定义。


但是这种美离程序员的生活有些遥远,尽管编码规范的价值在业内有着广泛的共识,在现实中却被否定得一塌糊涂。工程师曾经最引以为豪的代码,因为编码规范的缺失、命名的草率而全面地摧毁了彼此的信任,并严重地制约了相互的高效协同。工程师一边吐槽别人的代码,一边写着被吐槽的代码,频繁的系统重构和心惊胆战的维护似乎成了工作的主旋律。


那么如何走出这种怪圈呢?


众所周知,互联网公司的优势在于效率,它是企业核心竞争力。体现在产品开发领域,就是沟通效率和研发效率。对于沟通效率的重要性,可以从程序员三大“编程理念之争”说起:


  1. 缩进采用空格键,还是Tab键。


  2. if单行语句需要大括号,还是不需要大括号。


  3. 左大括号不换行,还是单独另起一行。


程序员三大“编程理念之争”


1. 缩进采用空格键,还是Tab键


在美剧《硅谷》中,你也许会记得这样一个经典镜头:主人公Richard与同为程序员的女友分手,理由是两人对缩进方式有着不同的习惯,互相拧巴地鄙视着对方的cody style。Tab键和空格键的争议在现实编程工作中确实存在。


《阿里巴巴Java开发手册》(以下简称“《手册》”)明确地支持了4个空格的做法,如果一定要问理由,没有理由,因为能够想出来的理由,就像最坚固的盾一样,总有更加锋利的矛会戳破它。只想说,一致性很重要,无边无际争论的时间成本与最后的收益是成反比的。



2. if单行语句需要大括号,还是不需要大括号


if单语句是否需要换行,也是争论不休的话题。相对来说,写过格式缩进类编程语言的开发者,更加习惯于不加大括号。


《手册》中明确if/for单行语句必须加大括号,因为单行语句的写法,容易在添加逻辑时引起视觉上的错误判断。此外,if不加大括号还会有局部变量作用域的问题。




3. 左大括号不换行,还是单独另起一行


因为Go语言的强制不换行,在这点上,“编程理念之争”的销烟味没有那么浓。如果一定要给一个理由,那么换行的代码可以增加一行,对于按代码行数考核工作量的公司员工,肯定倾向于左大括号前换行。


《手册》明确左大括号不换行。




这些理念之争的本质就是自己多年代码习惯生的茧,不愿意对不一样的风格妥协,不愿意为了团队的整体效能提升而委屈自己。其实,很多编程方式客观上没有对错之分,一致性很重要,可读性很重要,团队沟通效率很重要。

有一个理论叫帕金森琐碎定律:一个组织中的成员往往会把过多的精力花费在一些琐碎的争论上。程序员天生需要团队协作,而协作的正能量要放在问题的有效沟通上。个性化应尽量表现在系统架构和算法效率的提升上,而不是在合作规范上进行纠缠不休的讨论、争论,最后没有结论。规范不一,就像下图中的小鸭子和小鸡对话一样,言语不通,一脸囧相。




鸡同鸭讲也恰恰形容了人与人之间沟通的痛点,自说自话,无法达成一致意见。再举个生活中的例子,交通规则靠左行还是靠右行,两者孰好孰坏并不重要,重要的是必须要在统一的方向上通行,表面上限制了自由,但实际上是保障了公众的人身安全。试想,如果没有规定靠右行驶,那样的路况肯定拥堵不堪,险象环生。同样,过分自由随意、天马行空的代码会严重地伤害系统的健康,影响到可扩展性及可维护性。


因此,阿里云还上线了Java代码在线检测功能,快来为你的代码做个X光扫描,看看你的代码中哪些是不符合规范的吧!


Java代码在线检测使用方法


第1步:登录阿里云RDC平台


使用阿里云账号登录研发协同RDC平台,链接:https://rdc-test.aliyun.com/


如果提示没有所属企业,则需要新建一个企业(企业名称可以自由填写),可以看到“阿里巴巴Java代码规约扫描”测试任务。




第2步:上传Java代码


点击左侧的【代码】,在右侧新建Git组和Git库,并向该库提交要进行测试的java项目代码,并复制Git库地址。




第3步:新建测试任务


返回测试任务界面(https://rdc-test.aliyun.com/),点击“阿里巴巴Java代码规约扫描”测试任务,新建测试任务,填写上一步复制的Git库地址,点击【确定】按钮。

第4步:运行测试


点击右侧【运行】按钮,开始进行代码扫描。


第5步:查看结果


点击数字,查看详细扫描报告。


如何免费获得此书?


在留言区,聊一聊你为什么想看这本书,就有机会免费获得作者签名版的《阿里巴巴Java开发手册》一本,随机抽取5名童鞋送出。


活动时间:即日起至12月22日,获奖名单届时将在留言区公布。

往期精彩文章

0.阿里巴巴云化架构创新之路

1. 福利:热门技术看什么?这份书单告诉你!(内含PDF链接)

2.AI在双11中的个性化搜索和决策实践

3.阿里云发布混合云数据存储和灾备方案

4.阿里云Elasticsearch的X-Pack:机器学习、安全保障和可视化


-END-

云栖社区

ID:yunqiinsight

云计算丨互联网架构丨大数据丨机器学习丨运维



这里“阅读原文”,来测一测阿里巴巴编码规范是否掌握!

赠书啦!《阿里巴巴Java开发手册》实体书面世!相关推荐

  1. 阿里巴巴Java开发手册的正确学习姿势是怎样的? | 文末送书

    △Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 243篇原创分享 作者 l Hollis 来源 l Hollis(ID:hollischuang) 很多人都知道,阿里巴巴 ...

  2. 《阿里巴巴Java开发手册》发布一周年!你不知道的背后故事!

    摘要: 今天是2月9日,也是<阿里巴巴Java开发手册>(下称<手册>)对外正式发布一周年的日子.在过去的300多个日子里,这本小小的手册在业界产生了巨大的影响力.值此一周年之 ...

  3. 作者谈《阿里巴巴Java开发手册(规约)》背后的故事

    1.前言 距离<阿里巴巴Java开发手册(规约)>(下称<手册>)对外正式发布已经1年多了.在过去的3日子里,这本小小的手册在业界产生了巨大的影响力.值此一周年之际,我们不妨一 ...

  4. 阿里巴巴Java开发手册———个人追加的见解和补充(一)

    先上干货,<阿里巴巴Java开发手册>的下载地址 https://yq.aliyun.com/articles/69327?spm=5176.100239.blogcont69327.15 ...

  5. 《阿里巴巴 Java 开发手册》读书笔记

    偶然看到阿里巴巴居然出书了???趁着满减活动(节约节约....)我赶紧买来准备看看,刚拿到的时候掂量了好多下,总觉得商家给我少发了一本书,结果打开才知道..原来这本书这么小.... 编码规范的重要性 ...

  6. 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍

    摘要: 本文带大家简单理解阿里巴巴Java开发手册中的规约内容以及P3C项目,可以帮助开发者扫描出所有潜在的代码隐患.在中间也聊了一些对于不同语言设计的理解,如何去看待语言的设计,其实是我们去学习一个 ...

  7. 《阿里巴巴Java开发手册》2018年完整资料下载!

    无规矩不成方圆,无规范不能协作. <阿里巴巴Java开发手册>(以下简称<手册>)是阿里内部Java工程师所遵循的开发规范,涵盖编程规约.异常日志.单元测试.安全规约.MySQ ...

  8. 304902阿里巴巴Java开发手册1.4.0

    转自官网 前言 <阿里巴巴Java开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者.现代软件行业的高速 ...

  9. 《阿里巴巴Java开发手册1.4.0》阅读总结与心得(一)

    前言 下面是阿里对<阿里巴巴 Java 开发手册>(下称<手册>)的介绍: 凝聚了阿里集团很多同学的知识智慧和经验,这些经验甚至是用血淋淋的故障换来的,希望前车之鉴,后车之师, ...

最新文章

  1. java创建线程的2种方式
  2. mysql_config_editor程序的用法
  3. 分布式技术追踪 2017年第四期
  4. 力扣110. 平衡二叉树(JavaScript)
  5. 修改web.conf不重启服务的方法
  6. c++前置声明的一点总结
  7. Echarts关系图(使用重力图)
  8. java怎么播放视频_如何播放视频文件 java
  9. 电力系统的常用仿真模块MATLAB/SIMULINK(1)
  10. 微信oauth MySQL_微信OAuth2网页授权登陆接口PHP实例下载
  11. 脉内分析从零开始(持续更新)
  12. n维空间的欧氏距离公式_n维欧氏空间中球的体积公式与表面积公式之间的微分关系(论文资料).pdf...
  13. Activity实战之装备购买小案例
  14. C语言课程设计(服装管理系统详解)
  15. 回顾公司系统与微信绑定流程
  16. idea莫名其妙打不开了怎么办
  17. 洛谷[LnOI2019]长脖子鹿省选模拟赛 简要题解
  18. ceph kernel rbd (一): 简介
  19. JavaScript(十一)——弹跳球
  20. 基于C#实现的进制计算器

热门文章

  1. ESP32 开发笔记(二)OLED ssd1306 apds9960 手势控制
  2. 软件研发效能的底层逻辑
  3. 数据可视化系列-05数据分析报告
  4. python指定依赖库路径
  5. 潮水退去 你还是那个让HR离不开的猎头吗
  6. 金岭矿业:增发收购集团矿产 买入
  7. element datetimepicker
  8. 项目经理如何做好项目数据分析?
  9. python输出素数5个一排_python如何输出质数
  10. 计算机桌面模糊了,桌面背景模糊