语境
在第35页的“ 清理代码”中,它说
这意味着if语句,else语句,while语句等中的块应为一行。该行可能是函数调用。这不仅使封闭函数较小,而且还增加了文档价值,因为在块中调用的函数可以具有很好的描述性名称。
我完全同意,这很有意义。
稍后,在第40页上,它介绍了有关函数参数的信息
函数的理想参数个数为零(尼拉度)。接下来是一个(单声道),紧接着是两个(双声道)。在可能的情况下,应避免使用三个参数(三重性)。超过三个(多义词)需要非常特殊的理由-因此无论如何都不应使用。争论很难。他们具有很大的概念力。
我完全同意,这很有意义。
问题
但是,通常我会发现自己从另一个列表创建了一个列表,而我将不得不忍受两个弊端之一。
我在代码块中使用了两行,一行用于创建事物,一行用于将其添加到结果中:
public List<Flurp> CreateFlurps(List<BadaBoom> badaBooms)
{
List<Flurp> flurps = new List<Flurp>();
foreach (BadaBoom badaBoom in badaBooms)
{
Flurp flurp = CreateFlurp(badaBoom);
flurps.Add(flurp);
}
return flurps;
}
或者,我在要向其中添加事物的列表的函数中添加了一个参数,从而使其“变差了一个参数”。
public List<Flurp> CreateFlurps(List<BadaBoom> badaBooms)
{
List<Flurp> flurps = new List<Flurp>();
foreach (BadaBoom badaBoom in badaBooms)
{
CreateFlurpInList(badaBoom, flurps);
}
return flurps;
}
题
我没有看到哪些(缺点)优势,这些优势通常使它们之一更受欢迎?还是在某些情况下有这样的优势?在这种情况下,做出决定时我应该寻找什么?
f(g(x))
不符合您的风格指南,那么我就无法修复您的风格指南。我的意思是,您也不会分成sqrt(x*x + y*y)
四行,对吗?这就是两个(!)内部嵌套级别(gasp!)上的三个(!)嵌套子表达式。您的目标应该是可读性,而不是单个运算符。如果您想要以后的版本,那么,我为您提供了一种完美的语言:汇编程序。
mov
指令并jmp toStart
在最后使用单个指令来制作图灵完整的计算机。有人实际上制作了一个可以做到这一点的编译器:D
rlwimi
在PPC上的臭名昭著的指示了。(这代表“旋转左字立即掩码插入”。)此命令使用不少于五个操作数(两个寄存器和三个立即值),并且执行以下操作:将一个寄存器内容立即移位一次,掩码为使用一个由其他两个立即数操作数控制的1位单次运行创建的,将与另一个寄存器操作数中该掩码中的1位相对应的位替换为旋转寄存器的相应位。非常酷的指示:-)
flurps.Add(CreateFlurp(badaBoom));
?