[PBP]代码布局(3)
继续翻译Perl最佳实践的2.9~2.12。
2.9 行长度
保持行长度为78字符。
虽然以现在的高分辨率显示器已完全可以在一行中显示300个字符, 但还是建议保持每行不超过78个字符。 这不仅仅是出于显示上的考虑,更为重要的一个理由是, 通过邮件发送代码片段时,78字符的行长度可以保证在回复邮件时 代码不至于被换行。
在vi中可以设置以下选项,使其自动换行:
set textwidth=78
在Emacs中可以用以下命令达到同样目的:
(setq fill-column 78)
(setq auto-fill-mode t)
2.10 缩进
使用四列的缩进。
对于缩进的争论更多,不同的程序员会给出不同的答案:2、3、4或者8列。
早期的大牛们倾向于使用8列的缩进,理由是许多打印机和终端的默认TAB宽度 仍为8字符,因此使用8字符缩进可以保证在任何地方看到的效果都一样。
但是的确(年轻人们会这样想),8列的缩进非常难看,并且很难阅读。 他们觉得缩进不能超过2到3个字符。小的缩进可以在有限的显示器上显示更多层次的 嵌套;也能减少阅读时视线水平移动的距离。
但问题是,过小的缩进对于上年纪和视力不好的人来说,很难用肉眼 分辨出缩进的层次。
最合适的缩进宽度还是4列,对于两种人来说都是个能够接受的平衡点吧。
2.11 制表符(Tab)
使用空格缩进,不要用Tab。
Tab不适合用于缩进,即使你已经设置编辑器的Tab宽度为4列。 Tab在打印时与显示时的效果不同(打印时通常会变成8列宽), 另外将代码粘贴到字处理程序(如Word)中时也是如此。 甚至在其他人的编辑器上查看代码时,如果他的Tab设置与你不同, 看到的效果也不一样。
所以不要使用Tab键进行缩进,至少不要同时混合使用Tab和空格。
2.12 代码块
不要在一行中书写两条语句。
一行写两条或多条语句,会非常难于理解:
RECORD:
while (my $record = <$inventory_file>) {
chomp $record; next RECORD if $record eq $EMPTY_STR;
my @fields = split $FIELD_SEPARATOR, $record; update_sales(\@fields);$count++;
}
你已经通过K&R括号风格节约了许多空间了,把这些空间用在增强代码可读性上吧:
RECORD:
while (my $record = <$inventory_file>) {
chomp $record;
next RECORD if $record eq $EMPTY_STR;
my @fields = split $FIELD_SEPARATOR, $record;
update_sales(\@fields);
$count++;
}
即使是 map 或 grep 内部的语句,如果超过一条语句,那么也应该写在各自独立的行上。