为什么开关语句上的奇怪的缩进?
为什么imho缺less“case”的缩进 – switch语句中的关键字被认为是很好的样式?
在每个IDE中,“case”关键字的缩进看起来都不是默认的格式化选项:
switch (i){ case 0: break; case 1: break; }
而我觉得这个格式更直观:
switch (i){ case 0: break; case 1: break; }
这背后有一些逻辑,这避开了我吗?
这些案例是逻辑标签。 许多人把标签放在与他们所在的块相同的缩进级别上。在我看来,这样就更容易阅读文本。
我将它与时间轴进行比较,您可以滚动浏览。 时间线上有标记,而不是缩进内容。 然后,您可以快速指出标签/标记的位置,而不会将您的眼睛从基线移开。
用4个字: 没有块,没有缩进 。
案件不打开块。 在C或C ++中,您甚至可以在开关块的开始处放置variables声明(但不调用初始化程序,除了静态variables,这是一个陷阱)。 你可以用switch
做很多奇怪的事情,比如Duff的设备 。
因此,作为标签的情况下,缩进他们似乎并不直观,不缩进是大多数风格select的风格。
Java TM编程语言 1999年的官方Oracle 代码约定 (第7.8节)build议了一种开关样式,其中case语句相对于switch语句整体不缩进。
这是一个主观的select,但是Sun决定,如果每个人都坚持一种风格,并且select了这个,那就更好了。
有不同的缩进样式可供select。 AFAIK,只要你一直使用缩进样式,没有一个被认为是比其他人更好的样式。 对于我来说,缩进case
标签更具可读性,类中的private
, protected
和public
标签也是如此,但是,我的IDE不会按照我的方式进行缩进。 我的代码不像我想要的那样可读。 好吧…
也许这是保持相同的缩进级别, if
它的逻辑等价物expression在if
语句中? 那是:
switch(i){ case 0: //do something 1 case 1: //do something 2 }
会看起来类似于它的逻辑等价物:
if(i==0){ //do something 1 }else if(i==1){ //do something 2 }