
重构
行走江湖,靠的是滚光烂熟的重构武器库
NickAsuo
我一个烂到不能再烂的程序员,没人再能跟我比烂
展开
-
split loop
【代码】split loop。原创 2023-11-15 14:41:50 · 73 阅读 · 0 评论 -
remove the conditional with polymorhpism
【代码】remove the conditional with polymorhpism。原创 2023-11-15 13:44:38 · 64 阅读 · 0 评论 -
Refactoring
【代码】Refactoring。原创 2023-11-14 13:54:21 · 75 阅读 · 0 评论 -
Abstract Factory
【代码】Abstract Factory。原创 2023-07-21 13:47:27 · 93 阅读 · 0 评论 -
Factory Method
【代码】Factory Method。原创 2023-07-21 10:18:56 · 97 阅读 · 0 评论 -
Replace Nested Conditional with Guard Clauses
【代码】Replace Nested Conditional with Guard Clauses。原创 2023-07-20 10:42:40 · 203 阅读 · 0 评论 -
Factory Method pattern
【代码】Factory Method pattern。原创 2023-07-20 10:41:32 · 81 阅读 · 0 评论 -
Replace Conditional with Plymorphism 之本质
这个重构手法我看了不下5遍,但是心中的谜团却始终缠绕着我,重构成继承关系后,如果无法消除条件变量,在决定使用哪个子类的判断时,判断语句或case语句不是又产生了吗,所以多条件判断语句和switch中多个case判断,到底能真正消除吗?这个小小的道理,又再次把我摁在地上摩擦,我肉眼赤裸裸盯着时隔多年反复看了多次都没想明白的用泛化替换复杂判断语句,就因为今天的实践,彻底明了。重构手法,根据《refactoring 》的方法就是用泛化(继承),将条件变量决定的操作放置于子类来消除多条件判断和多个case语句。原创 2023-07-20 10:18:54 · 58 阅读 · 0 评论 -
继承关键字:public private protected
public:公有的属性和方法:可以在继承子类和继承外面调用。private:私有的属性和方法:继承子类和继承外面不能调用。protected:保护的属性和方法:只有继承子类可以访问。原创 2016-05-10 21:37:21 · 344 阅读 · 0 评论 -
重构:Query Method
在重构:Replace Temp with Query中,用查询函数(query method)来取代totalAmount 和frequentRentalPoints这两个临时变量。首先用getTotalCharge()取代totalAmount:public class Customer { private String _name; private Vector<Rental>原创 2016-05-02 22:17:50 · 517 阅读 · 0 评论 -
重构:switch语句改成策略模式还是状态模式
在重构篇里,可以用多态来取代switch语句,但是因为:一部影片可以在生命周期内修改自己的分类,一个对象却不能在生命周期内修改自己所属的类。所以这里不能用策略模式,用多态取代switch,而应该用状态模式(State)。public class Movie { public static final int CHILDRENS = 2; public static final int原创 2016-05-02 22:32:23 · 7057 阅读 · 0 评论 -
重构:Extract Method
public class Movie { public static final int CHILDRENS = 2; public static final int REGULAR = 0; public static final int NEW_RELEASE = 1; private String _title; private int _priceCo原创 2016-05-02 20:42:52 · 353 阅读 · 0 评论 -
重构:Move Method
在重构:extract method篇中的,amountFor函数应该搬家到Rental类中。public class Rental { private Movie _mMovie; private int _daysRented; public Rental(Movie movie, int daysRented) { // TODO Auto-generat原创 2016-05-02 21:01:54 · 333 阅读 · 0 评论 -
重构:Replace Temp with Query
把重构:move method篇中的statement函数中,变量thisAmount可以除去啦。原创 2016-05-02 21:07:59 · 341 阅读 · 0 评论 -
Separate Query from Modifer
当然,这种情况下,我得到了大量重复代码,因为修改函数之中使用了与查询函数相同的代码。然后,我要逐一替换原函数内所有的return语句,改调用新建的查询函数。每次替换后,编译并测试。例如,有这样一个函数,一旦有人入侵安全系统,它会告诉我入侵者的名字,并发送一个警报。大佬[Meyer]说:某个函数既返回对象状态值,又修改对象状态。建立两个不同的函数,其中一个负责查询,另一个负责修改。该武器是蒙古族人喜欢的一种弯刀,常用于打猎。将查询函数和修改函数分离。原创 2023-07-06 20:46:18 · 154 阅读 · 0 评论