简单重构 very careful about your code

代码编写需要有一种统一的对称的美感。
比如下面的代码,在对称上有问题。

问题一,为何在E ()中有减一的操作,回答是需要考虑最后一块,不make sense,暂且放着。
问题二,为何for循环在E 是 <= ,而在D 中却是 < ,这是第二个不对称的地方,理由也是为了考虑最后一块数据。
其他问题与主题无关,暂且不提。

可以看到在E ()中为了最后一块数据,引入了两个需要额外解释说明的地方,
这样就让E ()这个函数与它的对应函数D ()从形式上很不一样,这就是所谓的代码味道不够好。

但是最后不整齐的数据是一个问题,可以将问题使用额外代码隔离开,这样逻辑就比较清晰。

修改后添加的代码单独为了最后一部分数据加入,
前面的for循环与D ()函数中的for循环已经有着统一风格,也没有奇怪的<= 和”减一操作”出现了。

 

《简单重构 very careful about your code》有1个想法

  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();
    }

发表评论