《重构——改善既有代码的设计》读书笔记2

2019-12-14  本文已影响0人  抬头挺胸才算活着

参考资料:
第六章 重新组织函数

这一章节的主线是对函数进行调整,使得函数有合适的结构和可读性。可以参考该章节一开始作者的总结,感觉这段写得非常好,把整章的手法都串联起来了。


double basePrice = anOrder.basePrice();
return (basePrice > 1000)

修改后

return (anOrder.basePrice() > 1000)
double basePrice = _quantity * _itemPrice;
if (basePrice > 1000)
  return basePrice * 0.95;
else
  return basePrice * 0.98;

修改后

if (basePrice() > 1000)
  return basePrice() * 0.95;
else
  return basePrice() * 0.98;
...
double basePrice() {
  return _quantity * _itemPrice;
}
void aMethod(Object foo) {
foo.modifyInSomeWay(); // that's OK
foo = anotherObject; // trouble and despair will follow you

动机:作者说到这样可以回让你误解传进来的那个参数在被调用函数之外已经变成anotherObject,这个我觉得还好。第二个是违反了参数的语义,参数就是被传递进来的东西,对参数赋值有点滥用变量的意思。

String foundPerson(String[] people){
    for (int i = 0; i < people.length; i++) {
        if (people[i].equals ("Don")){
            return "Don";
        }
        if (people[i].equals ("John")){
            return "John";
            114
        }
        if (people[i].equals ("Kent")){
            return "Kent";
        }
    }
    return "";
}

修改后

String foundPerson(String[] people){
    List candidates = Arrays.asList(new String[] {"Don", "John",
            "Kent"});
    for (int i=0; i<people.length; i++)
        if (candidates.contains(people[i]))
            return people[i];
    return "";
}

总结:

  1. 以查询取代临时变量
  2. 内联临时变量
上一篇 下一篇

猜你喜欢

热点阅读