使用 bisect 优化范围类分支判断
1 | def rank(rating): |
要优化这段代码,我们得把所有分界点收集起来,放在一个元组里。因为 breakpoints 已经是一个排好序的元组,所以我们可以直接使用 bisect 模块来实现查找功能:
1 | import bisect |
使用字典优化分支代码
1 | def get_sorted_movies(movies, sorting_type): |
Python 的字典可以装下任何对象,所以我们可以把各个分支下不同的东西——排序的 key 函数和 reverse 参数,直接放进算法字典里:
1 | def get_sorted_movies(movies, sorting_type): |
在分支中寻找多态的应用时机
1 | class FancyLogger: |
多态表示同一个方法调用,在运行时会因为对象类型的不同,产生不同效果。比起把所有的分支和可能性,一股脑儿地塞进程序员的脑子里,多态思想驱使我们更积极地寻找有效的抽象,以此隔离各个模块,让它们之间通过规范的接口来通信:
1 | class FancyLogger: |