1. 聚能聊>
  2. 话题详情

如果给你一次改变开发规约的机会!

kyesbblr_1_2_jpeg

《阿里巴巴Java开发手册》v1.1.1版本火热出炉,自从2.9发布之后,陆续修正了部分示例、部分描述、标点错误、总页码错误,堪称是史上最完善的版本。

新版手册点此下载>>

附重要修订点:

一、增加前言部分。说明手册制定的背景,内容划分的依据,等级设置的初衷。
二、增加版本历史。方便阅读者清晰知道版本的演进历史。
三、增加专有名词解释。比如SOA/NPE/POJO在文末进行专门的解释,统一概念。
四、总页码37修正成34。排除封面计入总页数。
五、太阳年龄超过int的表示范围。这是一个相当隐藏的不准确示例。
六、代码格式问题。特别是个别不符合格式规约中的示例代码。
七、自反性描述错误。

现在,给各位JAVA爱好者一个改变开发规约内容的机会

  · 不管是标点,还是语法;
  · 不管是代码,还是示例;
  · 不管是目录,还是后记;
  只要你能够找出来,我们都有礼物奉上,先到先得,不容错过,你有机会改变规约的内容,帮助到上百万开发者,来吧,相信你的眼力和能力。

参与话题

奖品区域 活动规则 活动已结束,可继续参与讨论哦

  • 奖品一

    虾米VIP月卡 x 6

  • 奖品二

    积极向上淘公仔 x 2

  • 奖品三

    云栖大会订制T恤 x 2

215个回答

1

伊柒 已获得积极向上淘公仔

第一章的第2节常量定义的第1条:“【强制】不允许出现任何魔法值(即未经定义的常量)直接出现在代码中。” 意思很明白,但有语病,建议去掉第一个“出现”;这一条中举的反例“String key = "Id#taobao_"+tradeId;” 参考第3节格式规约的第4条“【强制】任何运算符左右必须加一个空格。”这行代码的+左右应添加空格,此外这行末尾的分号,与下一行代码的分号明显不同,不知是字体缘故还是中文标点导致?

孤尽 回复

犀利的眼神~

陌花拟 回复

111

手指的旋律 回复

666

聚小编 回复

火眼金睛啊~

银河璀璨 回复

厉害啊

壹族 回复

猴哥!

评论
1

天机浮现 已获得积极向上淘公仔

一 编程规约 (七) 控制语句部分 第3条 正例:逻辑上超过3层的if-else代码可以使用卫语句,或者状态模式来实现 ;其中卫语句是指switch语句吧a

by the way:特别讨厌别人的代码里if后面不加大括号...曾经改过一个bug是if没跟大括号,然后在if和条件语句中间搞了别的代码

自己百度了下,一脸懵逼:有人说卫语句就是把复杂的条件表达式拆分成多个条件表达式,条件满足就return;卫语句这个词谁发明的...还记得的学习时我们老师说方法只有一个出口就好,不要搞多个return....是时代在变化吗

我以为我能得到一个衬衫奖励,结果发现自己已经out了,好伤心;
另外给这个页面设计提个意见:点击修改时文本框的默认高度就一行,可以按内容自动扩展呗

孤尽 回复

给你的认真回复点赞,同时也送你一个礼物表示一下。
首先,卫语句示例如下:

public void today() {
    if (isBusy()) {
        System.out.println("change time.");
        return;
    }

    if (isFree()) {
        System.out.println("go to travel.");
        return;
    }

    System.out.println("stay at home to learn Alibaba Java Coding Guideline.");
    return;
}

其次,你们老师说的一个出入口,是指复杂逻辑处理的语句场景,如果满天飞return,的确不太容易看懂代码。而卫语句是一个格式比较清爽的方式来说明什么条件执行什么语句。

最后,最有可能的条件放在最前边,这样大多数情况就不需要判断多个才能return。
如果还有问题,欢迎直接回复评论。

天机浮现 回复

非常感谢你的解释和礼物

评论
0

随心的风 已获得虾米VIP月卡

那个二级标题为什么还是中文数字呢?阿拉伯数字不是更好吗(⊙o⊙)?三级标题用圈加阿拉伯数字也可以的吧。小标题规约出现次数太多了啦。。
ac2183b377c24de9a489ba86becd026a_d171dce26b10428cb55bb33b3111ffb8.jpg

随心的风 回复

可能是论文改的次数太多了😳😳

孤尽 回复

关于是什么序号的方式,我们不纠结,毕竟让读者明白第几就行。你说的规约出现太多的情况,我们会适度考虑一下。所以,给你一个小礼物吧。

yanji_ 回复
回复@孤尽:

二级标题为什么有的分页有的不分页?

孤尽 回复
回复@yanji_:

当时预留部分空白,如果打印出来,可以记些小笔记。

评论
0

哈斯 已获得虾米VIP月卡

规范代码主要是让开发人员能快速读懂代码,迅速上手,怎么说呢有好处也坏处,好处是服务社会,增加自己学习的动力,但是负面呢?初上手的新人就能在你的代码上维护新增,等项目处于维护区时,老板就该想你是不是没有用了,找个工资低的人维护就行了。这点你们怎么看呢

孤尽 回复

首先,程序员有这样的情怀,有大情怀,乐于奉献出自己的美妙代码。再次,规约不是限制代码算法效率、架构优雅性,而是风格的个性化。最后,工资是JOB,薪酬是CAREER。只有大的格局,才会成就更大的你,让别人易于维护,可能你就是他们的管理者,影响更多的人写出更多好的代码。

孤尽 回复
回复@孤尽:

你的问题还是有启发性质的,给你一个小小的礼品,如果有什么疑问可以继续留言。。。

评论
1

zhuo阿蛮 已获得虾米VIP月卡

代码这块,我们用了checkstyle和findbug来检测代码书写是否合理,其实不得不说日企虽然有点那个,但是在规范上真的是严格的可以。
命名规则 5.【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
这个我觉得本身没有问题,但是应该在下面加一句,如果过长缩略规则是怎样的,因为实际上我们真的有遇到特别长的表类似,arch_company_wechat_cardface_rel_cardtype ,还有比这更长的.是不是可以如果过长,应该可以缩略并写出缩略标准,就像五笔打字一样,其实五个笔画已经意义表达出大部分的意思了,我们是否可以考虑以5个单词来表达更加长的命名含义呢?一定要全部写出来吗?是否可以有缩略规则。

孤尽 回复

在阿里巴巴内部有个专用的缩略表,只有符合表中的表达习惯才可以。至于超长的情况,这不是规约能够规定清楚的,这是程序员素质的一部分,就像说完全不会英语,肯定不可能是一个好的程序员一样。

评论
1

1739591390563331 已获得虾米VIP月卡

总页码37修正成33。排除封面目录计入总页数。

孤尽 回复

你说的前言页吧?

评论
0

没带红领巾 已获得虾米VIP月卡

常用手册中对代码规范分三种类型:强制、推荐、参考。对Java 开发代码进行规范是有必要的,因为市面上的学习资料对于代码规范不尽相同,需要一个统一的规范供代码编写人员遵守。在日常合作开发中不同的人有不同的编码习惯,有些可写可不写的,有些是不同代码实现统一功能,中文拼音编程……这样使得维护和重构的过程相对困难。

孤尽 回复

是的,其实形成一种行业共识,也降低了无谓的沟通消耗和个人额外学习成本。现在进入信息爆炸的年代,知识也是这样,我们需要把更多的精力放在算法、效率、框架、性能优化、架构思维上,而不是整天沉浸在争吵空格问题、要不要换行的问题。能量是守恒的,所以把我们这部分在规则上消耗的能量放在其它方面,相信大家从事程序员这个行业更有成就感。

评论
0

keller.zhou 已获得云栖大会订制T恤

作为一个java攻城狮,面对编码规约,我有话要说。公司每次需要我review别人的代码的时候,都有一种隐隐的痛,面对一些无法直视的代码,通常我会细改之,还会多给别人提提建议,以下是我觉得比较重要的几点,需要大家共同遵守的规范。1.只要重写equals方法,就一定要重写hashCode的方法 2.在并发的删除操作中,要对Iterator对象加锁 3.集合初始化时,要对集合初始化大小 4.对资源进行锁时,要保持一致的加锁顺序,避免造成死锁 5.在事务代码中,需要回滚事务,要手动回滚事务 ,还有很多规约需要我们在开发的过程中吸取经验教训,接近业界的标准。
强迫症表示最怕的是看别人的代码,有直接用中文变量名的,还有压根没有驼峰的(就和文章没有标点符号一样能不能看懂完全靠猜),心中无数草泥马奔腾有木有!有木有!!其实我觉得不管怎样命名,只要在符合命名规范的前提下,让它看起来酷酷哒就行了对吧。

孤尽 回复

我果断地给你一个奖品,写得太赞了!未来插件开源,你可以让你的小伙伴先用插件扫描,只有零错误,才可以提交给你来REVIEW。

评论
0

szm. 已获得云栖大会订制T恤

说下几处小问题:

首先,我认为i前言应该放在封面后面,目录前面i,前言应该有自己的页码,不和主内容共用页码。

第二,附录中有版本迭代信息,可以不在开篇显示

第三,书中第7页、第8页、第9页、第15页、第18页、第20页、第24页、第26页和第31页换页存在问题,尤其是24页、26页和31页,二级标题进行了与一级标题一样的换页

内容相关的错误发现不了啊,只能找找格式错误了

孤尽 回复

第一点:目录放在前边的考虑:在左侧导航栏能够有前言索引,可以方便快速地回到文章顶端。
第二点:开篇展示版本说明的目的,是让开发同学第一时间知道当前版本号和主要改动点,没有人愿意会拉到最后看一下当前版本是什么。后续接受你的部分建议,只放一个版本号在文章头部。
第三点:一方面为了排版需要,另一方面,可以一定的空白,当有些同学打印出来时,可以写部分笔记在空白处。

评论
0

1144891385860659

规约是啥意思?

孤尽 回复

这是一种规定,有一定的约束力;这也是大家的约定,有一定的共识性。在共识的基础上,推进有约束力的规则,提升协作效率,提高代码质量。

lost2017 回复

有规约可以增加大家交流沟通的便捷性,是协作的基础

交流学习 回复

规约就是增加交流沟通的便捷性,是协作的基础。

交流学习 回复

规约就是增加交流沟通的便捷性,是协作的基础。

tttttaaa 回复
回复@孤尽:

正解

无敌西瓜 回复

对应的英文是convention,有协定、惯例、公约的意思。

评论
0

似水的流年 已获得虾米VIP月卡

二方库版本号命名方式:主版本号.次版本号.修订号做了说明的修改
说明:注意:起始版本号必须为: 1.0.0 ,而不是 0.0.1 正式发布的类库必须先去中央仓库
进行查证,使版本号要有延续性,正式版本号不允许覆盖升级。如当前版本:1.3.3,那么下
一个合理的版本号:1.3.4 或 1.4.0 或 2.0.0

孤尽 回复

这里有错误吗?

评论
0

1440589471777671

java大家用了这么久,为何这就能作为一个开发标准

孤尽 回复

阿里大规模协同的开发经验花了很长的时间来证明这样一套标准是有价值的,在提升协作效率和开发质量方面是很有意义的借鉴作用。大家用得很多,就像原始社会的战斗一样,没有协同,没有章法。可是现代战争,没有三军高效协同作战是不可能取胜的。

无敌西瓜 回复

其实大部分规约都有其存在的理由。是否理解这些理由能体现出高手与新手的区别。

评论
0

31871935

这个技术活,要是能像芯片一样,直接存进我脑袋就好了

孤尽 回复

即使规约的插件开源,也一样需要大家的努力去消化的。只凭轻松呼吸就可以做得比别人好的话,那是不可能的。

评论
0

1077292476298612

说的不是很明白,看不懂!!!!

孤尽 回复

如果你说规约不明白,那么可以反馈哪里不明白;如果你说这个话题不明白,就是你在规约里找茬。

评论
0

农侬浓脓

黑猫,白猫,能抓到老鼠的就是好猫

孤尽 回复

那是抓老鼠不需要团队协作,一只猫就可以完成。

评论
0

袁贵

其中很多的规约,在日常工作中,都有注意到,但是新来的人没有这个意识。
可见,有一个明文的东西,是多么的重要!!

孤尽 回复

阿里巴巴Java开发手册会深刻地影响到Java业界,大家好,才是真的好。

评论
0

皓哲

screenshot

孤尽 回复

的确是应该改成说明会好点。

评论
0

hello7

受监控吗?

孤尽 回复

你的意思是?。。。

评论
0

最美麗的夢

有機會嗎

孤尽 回复

我相信你可以找出来来错误的!加油

评论
0

1567191633835712

  · 不管是标点,还是语法;
  · 不管是代码,还是示例;
  · 不管是目录,还是后记;
  只要你能够找出来,我们都有礼物奉上,先到先得,不容错过,你有机会改变规约的内容,帮助到上百万开发者,来吧,相信你的眼力和能力。

孤尽 回复

是的。任何形式的错误。

评论
3
15337
浏览
0
收藏
邀请他人互动
关注
3
粉丝
12
话题
2

简介:

阿里巴巴技术专家,专注于国际化业务。
大数据开发套件(Data IDE),提供可视化开发界面、离线任务调度运维、快速数据集成、多人协同工作等功能,为您...

基于深度学习技术及阿里巴巴多年的海量数据支撑, 提供多样化的内容识别服务,能有效帮助用户降低违规风险。其产品包括...

凝聚阿里巴巴多年来在无线业务安全防御的成功经验和技术成果,并面向开发者和企业提供安全扫描、应用加固、安全组件、数...

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...