代码编写需要有一种统一的对称的美感。
比如下面的代码,在对称上有问题。
问题一,为何在E ()中有减一的操作,回答是需要考虑最后一块,不make sense,暂且放着。
问题二,为何for循环在E 是 <= ,而在D 中却是 < ,这是第二个不对称的地方,理由也是为了考虑最后一块数据。
其他问题与主题无关,暂且不提。
可以看到在E ()中为了最后一块数据,引入了两个需要额外解释说明的地方,
这样就让E ()这个函数与它的对应函数D ()从形式上很不一样,这就是所谓的代码味道不够好。
但是最后不整齐的数据是一个问题,可以将问题使用额外代码隔离开,这样逻辑就比较清晰。
修改后添加的代码单独为了最后一部分数据加入,
前面的for循环与D ()函数中的for循环已经有着统一风格,也没有奇怪的<= 和”减一操作”出现了。
《“简单重构 very careful about your code”》 有 1 条评论
个人感觉,太多的IF….看的头晕
protected byte[] E (byte[] data)
{
int maxLength = 1024 ;
var index = 0 ;
var q = from b in data
let groupNum = index++ % maxLength
group b by groupNum into block
select block;
return q.Aggregate(
new List(),
(eData, block) =>
{
var edata = provider.E(block.ToArray(), true);
eData.AddRange(edata);
return eData;
}
).ToArray();
}