摘要: 阿里巴巴集团推出的《阿里巴巴 Java 开发手册(正式版)》是阿里巴巴近万名开发同学集体智慧的结晶,以开发视角为中心,详细列举如何开发更加高效、更加容错、更加有协作性,力求知其然,更知其不然,结合正反例,让 Java 开发者能够提升协作效率、提高代码质量。
![]() | 1 abellee 2017-02-10 15:00:57 +08:00 看着好的学习一下 that's it |
2 antowa 2017-02-10 15:03:01 +08:00 感觉是重复。 JAVA 材料已经不少了吧? |
3 donyee 2017-02-10 15:06:47 +08:00 是不是要登陆阿里云才能下载? |
![]() | 4 stevenkang OP @donyee 我传到网盘上面吧,确实要登录 |
![]() | 5 stevenkang OP ![]() 下载的话,用网盘的吧,阿里上面那个需要注册账号 链接: http://pan.baidu.com/s/1gfLuXcn 密码: vt3t |
6 zgqq 2017-02-10 15:11:59 +08:00 via Android 就一些代码规范,而且很多都是共识了 |
![]() | 7 Ouyangan 2017-02-10 15:14:31 +08:00 结合 effective java 可以看看 |
8 donyee 2017-02-10 15:14:57 +08:00 @stevenkang 已经下载,多谢 |
![]() | 9 winglight2016 2017-02-10 15:19:49 +08:00 这种东西,自己公司订的规范文档都不会看,就更不用说外部的了 |
![]() | 10 hellommd 2017-02-10 15:24:36 +08:00 感觉挺好,公司规范用这一套就好了;-) |
![]() | 12 jakes 2017-02-10 15:38:37 +08:00 还是有很多干货的,推荐看一下。 |
13 lynx 2017-02-10 15:47:38 +08:00 看到他的集合处理的第 10 条,说 keySet 是遍历了两次,但是他内部的实现是套了一层迭代器,并不是遍历两次,实际只遍历了一次 |
14 saberpowermo 2017-02-10 15:52:57 +08:00 感觉还是非常不错的。。 之前在 1 个程序员群里 因为代码规范 跟人对喷过 就是关于 = == 左右两边加不加空格的问题, 我说这种是基本规范把 还是加上的好, 然后被一帮人 用 "我 不加空格 这程序能不能跑? " 的角度 一个劲怼。 最后想明白了 还是自己 too young.... |
![]() | 15 zeroten 2017-02-10 16:01:14 +08:00 |
![]() | 16 ThomasAnderson 2017-02-10 16:02:44 +08:00 @stevenkang xiexie |
![]() | 17 vozon 2017-02-10 16:09:16 +08:00 现在的公司不强调统一的编码风格, 导致强迫症真的很难忍... |
![]() | 18 murmur 2017-02-10 16:10:50 +08:00 ![]() [强制] 不要使用 count(列名)或 count(常量)来替代 count(*), count(*)就是 SQL92 定义 的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。 看到这行快哭出来了。。 count(*)、 count(1)、 count(列)哪个更快估计现在还可以吵几个小时,都快成玄学了 |
![]() | 19 sorcerer 2017-02-10 16:15:09 +08:00 via iPhone 学习了 |
21 acoder2013 2017-02-10 16:29:14 +08:00 写的不错,有很多干活 |
![]() | 22 lalalafq 2017-02-10 16:46:54 +08:00 我比较期待对应的代码检查脚本。 |
23 ptyfork 2017-02-10 16:58:47 +08:00 当你们都在争论代码格式的时候,我们 gophers 一个 gofmt 命令就全部搞定了。。 |
![]() | 24 chairuosen 2017-02-10 17:01:40 +08:00 @stevenkang 。。。发现百度网盘一个 BUG ,未登录状态,输入密码进入文件下载页,点一下保存到网盘,会弹登录框,关掉,再点一下右上角登录,弹出的登录对话框里面有两套登录 form 。。。 |
![]() | 25 lxlgod 2017-02-10 17:16:11 +08:00 @zeroten 链接: http://pan.baidu.com/s/1gfbtOt1 密码: wqgq |
![]() | 27 mgcnrx11 2017-02-10 17:33:38 +08:00 有没有说判断时要 null == instance 还是 instance == null |
28 dz8235462 2017-02-10 17:50:07 +08:00 更多的差异是在逻辑使用上,我个人一直使用异常来帮助跳出方法以及提供错误提示。但至今还没见过其他同事使用这种方式。所以基本每个人写的代码都是完全不同的,逻辑方式也不一样。我大部分情况都避免超过两层的循环和 if ,然而其他人并不这么搞。 |
![]() | 30 Mogugugugu 2017-02-10 18:01:29 +08:00 之前看 Google Java 编程风格规范,现在阿里也出了,怎么说呢,灵活应对吧。一般的常识性的规范,写代码的时候也都下意识的遵守了。不必强制,灵活就好。 |
![]() | 31 deweixu 2017-02-10 18:04:24 +08:00 今天下午看了一下,发现自己的 Java 基础知识太烂了,准备补补 |
![]() | 32 linghutf 2017-02-10 18:10:22 +08:00 下载正在看,这种可以体现别人的意图,怎么避免坑 |
![]() | 33 acrisliu 2017-02-10 18:15:20 +08:00 via Android 学习一下 |
![]() | 34 300 2017-02-10 18:16:34 +08:00 我记得前两天还有人讨论了来着( ̄ ̄") 8. [强制] POJO 类中布尔类型的变量,都不要加 is ,否则部分框架解析会引起序列化错误。 反例:定义为基本数据类型 boolean isSuccess ;的属性,它的方法也是 isSuccess(), RPC 框架在反向解析的时候,“以为”对应的属性名称是 success ,导致属性获取不到,进而抛出异 常。 |
![]() | 35 watzds 2017-02-10 18:27:11 +08:00 via Android ![]() 学好了再去阿里,阿里就减少培训成本了 |
![]() | 37 caixiexin 2017-02-10 18:57:31 +08:00 ![]() @zhiyuan91 null == instance 还是 instance == null 这种要求,记得在 C 和 C++里面是要注意的,因为很多人写 if( instance == null ) 时容易少打一个等号,导致 instance 被赋值,程序员又没发现,所以写这种 if 条件时常量必须放前面,比如 null == instance 。但是 java 里面 if(instance=null)是编译不过的,应该也不用要求了。 |
![]() | 39 hrong 2017-02-10 19:02:35 +08:00 via Android 这个文档体系感差了一点,不适合新手。 阿里的文档也就这水平。。。。 |
![]() | 41 Antidictator 2017-02-10 19:34:12 +08:00 via Android @mgcnrx11 哈哈哈 |
![]() | 42 wdlth 2017-02-10 19:44:47 +08:00 感觉很杂,像是东拼西凑出来的…… |
![]() | 43 Shura 2017-02-10 20:08:55 +08:00 StringBuffer sb = new StringBuffer(); 这个变量名啊, navie |
44 xiaonengshou 2017-02-10 20:15:47 +08:00 还是需要这样的规约的,就像 airbnb 的规范。约束不是目的,而是统一、 |
![]() | 45 smithtel 2017-02-10 20:29:52 +08:00 via Android 后面有干货,还是可以看看 |
![]() | 46 aristotll 2017-02-10 21:03:08 +08:00 居然都覆盖 Java8 了 Java 果然兼容性好 导致升级压力下了啊 |
![]() | 48 tt0411 2017-02-10 21:09:52 +08:00 干货挺多的. 代码规范必须配套代码分析工具, 工具比规范文档更重要, 希望阿里的同学能分享甚至开源他们的工具 |
49 zacard 2017-02-10 21:42:21 +08:00 有干货,很多规范非常实用。 |
50 ddou 2017-02-10 22:31:54 +08:00 编码规范,老鸟们早都烂熟于心了。作为新手指引,在公司内作为一个代码的基本要求规范,还是有点价值的。 |
![]() | 51 gouchaoer 2017-02-10 22:40:55 +08:00 via Android 还行吧,都看完了 |
52 CYKun 2017-02-10 23:07:26 +08:00 via Android 请教一下各位,“对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部的实现类用 Impl 的后缀与接口区别” 是什么意思? 我的理解里 Service 和 DAO 是在系统内部被调用完成业务逻辑的,并不会被暴露给外部系统,这里的 SOA 是什么意思? |
![]() | 56 huanghaofu86 2017-02-11 09:50:19 +08:00 阿里用什么数据库? |
![]() | 58 nashxk 2017-02-11 10:32:59 +08:00 如果自己没有一套合理的规范,学习一下也是很好的,提高协作效率,不用怎么评价。 |
![]() | 60 kingcos 2017-02-11 11:38:02 +08:00 via iPhone 不错啊,如果好的话准备用到下面的项目里 |
61 zhx1991 2017-02-11 12:12:44 +08:00 里面关于使用 final 可以提升效率的说法是不严谨的 |
62 hjklb 2017-02-11 13:22:05 +08:00 via Android com.eg.android.AlipayGphone 支付宝的包名 2 个大写字母。还强制? |
63 hjklb 2017-02-11 13:23:14 +08:00 via Android 还有 eg 是什么鬼简写。 |
64 davinci 2017-02-11 23:23:30 +08:00 不明觉厉 |
65 mingyun 2017-02-11 23:48:55 +08:00 有对应 php 或 python 版吗 |
![]() | 66 Miy4mori 2017-02-12 01:35:38 +08:00 要效仿使用的话为什么不用 google style guide ,反正阿里的东西总觉得是世界上有比它好的他却要自己造个有点问题的。。。 |
67 1762628386 2017-02-12 11:56:14 +08:00 @CYKun 暴露出来的服务 一定要在接口文件中声明 |
68 1762628386 2017-02-12 11:56:32 +08:00 . |
69 phx13ye 2017-02-13 16:53:44 +08:00 翻了一下当时下的支付宝即时到帐 sdk ,我可能下了假代码。。。。 /** * 生成文件摘要 * @param strFilePath 文件路径 * @param file_digest_type 摘要算法 * @return 文件摘要结果 */ public static String getAbstract(String strFilePath, String file_digest_type) throws IOException { PartSource file = new FilePartSource(new File(strFilePath)); if(file_digest_type.equals("MD5")){ return DigestUtils.md5Hex(file.createInputStream()); } else if(file_digest_type.equals("SHA")) { return DigestUtils.sha256Hex(file.createInputStream()); } else { return ""; } } |
![]() | 70 stevenkang OP @phx13ye 可能在假的支付宝网站上面下载到了假的支付宝员工编写的假的代码。 |
71 dz8235462 2017-02-15 16:08:22 +08:00 @reeco 我并不相信写一个 if 并生成一个 map ,放进去几个值再返回,比用异常直接结束方法要方便。一个应该返回 int 的方法,不应该在需要报错的时候报错吗? |
![]() | 72 stevenkang OP |