刚才看了一下泰山版的《阿里巴巴Java开发手册》,觉得大部分的规范还是挺不错的,但是感觉下面两个有些奇怪:
8【强制】POJO 类中的任何布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列
化错误。
说明:在本文 MySQL 规约中的建表约定第一条,表达是与否的值采用 is_xxx 的命名方式,所以,需要在
设置从 is_xxx 到 xxx 的映射关系。
反例:定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(),框架在反向解析的时
候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。
6【强制】不允许直接拿 HashMap 与 Hashtable 作为查询结果集的输出。
反例:某同学为避免写一个\,直接使用 HashTable 来接收数据库返回结果,结果出现日常
是把 bigint 转成 Long 值,而线上由于数据库版本不一样,解析成 BigInteger,导致线上问题。
上面的第8点说因为怕框架反解析的时候搞错所以不要这么写,那应该是框架的bug啊。正确的做法是给框架提issue,让框架纠正。为何框架的bug要通过程序员通过如履薄冰的编码来避免?下面的第6点更奇葩了,说因为由于线上数据库版本不一样,这不是安装数据库同事的锅吗?这个锅也要程序员来通过编码容错来避免?我就很喜欢用HashTable接收数据,因为不用定义对象会方便很多。