利用策略枚举对讨厌的Switch Case 语句进行重构

重构应随时随地进行,以改善代码设计。文章举例介绍了如何在影片出租店程序中,针对含有switch case的代码进行重构。通过引入策略枚举,遵循高内聚、低耦合原则,将不同类型的影片计费策略封装到对应的枚举实例中,提高了代码的可维护性和可扩展性。
摘要由CSDN通过智能技术生成

前言:

重构发生的时机应该在什么时候呢?

正确:一边写着代码,当完成之后,马上想着是否能够进行重构。

错误:写完代码之后,等以后有时间去重构。

即重构本来就不是一件应该特别拨出时间做的事情,重构应该随时随地进行。

书上有这么一句话,我非常喜欢:懒惰是程序员的一种美德。正如有句话说,不要让你的“勤奋”毁掉了你,有着异曲同工之妙。《重构改善既有代码的设计》的作者说,“我是个很懒惰的程序员,我的懒惰表现形式之一就是:我总是记不住自己写过的代码”,“我不是个伟大的程序员,我只是有着一些优秀习惯的好程序员”。

什么是重构:

在不改变代码外部行为的前提下,对代码做出修改,以改进程序的内部结构。本质上说,重构是在代码写好之后改进它的设计(注意:重构不一定能够提高性能,它提供了一种更高效且受控的代码整理技术,重构又与重写不同,重写代码是发生在现有的代码根本不能工作)。

举个栗子:(在笔试的时候经常会有类似重构的例子)

场景:一个影片出租店的程序,计算每一位顾客的消费金额并打印详单。操作者告诉程序:顾客租了哪些影片、租期多长,程序便根据租赁时间和影片单算出费用。影片分为三类:普通片、儿童片和新片。除了计算费用,还要为常客计算积分,积分会根据租片种类是否为新片而有不同。

未重构前的代码如下:

public class Customer {
//Movie只是一个简单的纯数据类
    private static 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 _priceCode;
        
        public Movie(String title, int priceCode){
            _title = title;
            _priceCode = priceCode;
        }
        
        public int getPriceCode(){
            return _priceCode;
        }
        
        public void setPriceCode(int arg){
            _priceCode = arg;
        }
        
        public String getTitle(){
            return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值