2019年12月4日
摘要: 你手上一个条件表达式,它根据对象类型的不同而选择不同的行为。将这个条件表达式的每个分支放进一个子类的覆写函数中,然后将原始函数声明为抽象函数。 动机:多态的最根本的好处是:如果你需要根据对象的不同类型而采取不同的行为,多态使你不必编写某些的条件表达式。 正因为有了多态,所以你会发现:“类型吗的swi 阅读全文
posted @ 2019-12-04 12:08 低调的小郭 阅读(758) 评论(0) 推荐(0) 编辑
摘要: 函数中的条件逻辑使人难以看清正常的执行途径。使用卫语句表现所有特殊情况。 动机:条件表达式通常有2种表现形式。第一:所有分支都属于正常行为。第二:条件表达式提供的答案中只有一种是正常行为,其他都是不常见的情况。 这2类条件表达式有不同的用途。如果2条分支都是正常行为,就应该使用形如if…..else 阅读全文
posted @ 2019-12-04 12:02 低调的小郭 阅读(1275) 评论(1) 推荐(1) 编辑
摘要: 在一系列布尔表达式中,某个变量带有“控制标记’的作用。以break或return语句取代控制标记。 动机:在一系列条件表达式中,常常会看到用以判断何时停止条件检查的控制标记。这样的标记带来的麻烦超过了它所带来的便利。人们之所以会使用这样的控制标记,因为结构化编程原则告诉他们:每个子程序只能有一个入口 阅读全文
posted @ 2019-12-04 11:47 低调的小郭 阅读(829) 评论(0) 推荐(0) 编辑
摘要: 在条件表达式的每个分支上有着相同的一段代码。将这段重复代码移到条件表达式之外。 动机:一组条件表达式的所有分支都执行了相同的某段代码。你应该将这段代码搬移到表达式外面。这样,代码才能更清楚地表明哪些东西随条件变化而变化、哪些东西保持不变。 做法:1、鉴别出“执行方式不随变化而变化”的代码。 2、如果 阅读全文
posted @ 2019-12-04 11:32 低调的小郭 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 你有一系列条件测试,都得到相同结果。将这些测试合并为一个条件表达式,并将这个条件表达式提炼为一个独立函数。 动机: 有时你会发现这样一串条件检查:检查条件各不相同,最终行为却一致。如果发现这种情况,就应该使用“逻辑或”和“逻辑与”将它们合并为一个条件表达式。 之所以要合并条件表达式,有2个重要原因。 阅读全文
posted @ 2019-12-04 11:28 低调的小郭 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 你有一个复杂的条件语句。从if、then、else三个段落中分别提炼出独立函数。 动机: 程序之中,复杂的条件逻辑是最常导致复杂度上升的地点之一。你必须编写代码来检查不同的条件分支、根据不同的分支做不同的事,然后,你很快就会得到一个相当长的函数。大型函数自身就会使代码的可读性下降,而条件逻辑则会使代 阅读全文
posted @ 2019-12-04 11:16 低调的小郭 阅读(553) 评论(0) 推荐(0) 编辑
  2019年12月2日
摘要: 概述 将函数本体(method body)替换为另一个算法。 动机(Motivation) 如果你发现做一件事可以有更清晰的方式,就应该以较清晰的方式取代复杂方式。可以把一些复杂的东西分解为较简单的小块,但有时你就是必须壮士断腕,删掉整个算法,代之较简单的算法。 public string Foun 阅读全文
posted @ 2019-12-02 15:41 低调的小郭 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 你有一个大型函数,其中对局部变量的使用,使你无法釆用 Extract Method。 将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的值域(field) 然后你可以在同一个对象中将这个大型函数分解为数个小型函数 class Order... double price() { double 阅读全文
posted @ 2019-12-02 15:30 低调的小郭 阅读(259) 评论(0) 推荐(0) 编辑
摘要: public class RemoveAssignmentsToParameters { //before remove assigments to parameters public int discount(int inputVal,int quantity,int yearToDate) { 阅读全文
posted @ 2019-12-02 15:13 低调的小郭 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 动机:临时变量有各种不同用途,其中某些用途会很自然的导致临时变量被多次赋值。“循环变量”和“结果收集变量”就是典型的例子:循环变量会随循环的每次运行而改变; 结果收集变量负责将“通过这个函数的运算”而构成的某个值收集起来。 除了这2种情况,还有很多临时变量保存一段冗长代码的运算结果,以便稍后使用。这 阅读全文
posted @ 2019-12-02 14:56 低调的小郭 阅读(222) 评论(0) 推荐(0) 编辑