Answers:
我认为这样做非常重要。原因如下:
如果这样做,我建议大家将所有代码都签入,然后由一个人对整个代码库进行重新格式化,然后全部重新签入,这样就设置了一个“巨大”的格式更改集(每个人都可以忽略),但是之后,所有差异都是真实的代码差异。
如果您一点一点地做,您将把真正的代码更改与格式更改混合在一起,在更改区域中不必要的事情会变得混乱。
我将在这里提出自己的答案,因为人们似乎只是在增加优势。我认为缺点是:
简而言之,一组非自动化的约定设置了最低的样式/可读性要求,而自动化的约定则设置了一个最小值和一个最大值。
我记得看过VB(也许是第5版)后发现,它最烦人的事情之一是它将强制重新格式化我的代码并删除基本格式以外的内容。
主要缺点是在真正重要的地方丢失了自定义格式。
想象一个典型的健全性检查if(),如果存在任何特定条件但不满足,它将失败。
if(
(user.id == TEST_ID)
||(
(user.id == UserID)
&&(
( user.type == HUMAN_USER && user.name.size() >= MIN_NAME )
||( user.type == EMULATION && input.source != SOURCE_INTERNAL ))
&& ( user.email == NULL || emailValidator.isValid(user.email))
&& ( (user.phone == NULL) == (user.type == EMULATION) )
// several more lines like this.)
){ /* handle results */ }
由于遵循条件逻辑结构的合理缩进,因此这是可读的。
现在,您的自动化工具不知道将不同条件逻辑分隔为相关行的线索。它没有理由将每个簇3-4个条件排成一行并将下一个条件分成两半。或将其拆分,每行一个比较表达式。它甚至在屏幕上看起来更漂亮,但是逻辑将丢失。
这取决于您的需求,但是有些约束是很有用的,例如,每个if()后面都应使用花括号,因为在重构时很容易得到这样的if if错误。
考虑这种情况:
if( x == 0 )
return foo;
//do something else
return bar;
如果现在想在if情况下添加一些日志记录,则可能会意外地写:
if( x == 0 )
log.info("x was 0");
return foo;
//do something else
return bar;
突然,您的方法总是返回foo
。
编辑:这不是自动格式化,而是样式检查。很抱歉,如果该答案也离题。:)
以我的经验,这是一件好事。没有一个,代码比较通常会显示出一堆空白格式,并且可能隐藏实际的代码更改。根据我的经验,弄清楚某人的格式并不是罪过,特别是因为整个团队保持一致的潜在好处。