《重构--改善既有代码的设计》读书笔记之四:将条件分支语句放入合适类中
来源:互联网 发布:yaml 数组 编辑:程序博客网 时间:2024/06/06 07:34
要点:最好不要在另一个对象的属性基础上运用条件分支语句,如果不得不使用,也应该在对象自己的数据上使用。
方法:getCharge() 和 getFrequentRenterPoints()移动到Movie类中去。
在运用继承重构代码之前 rental & movie 代码如下:
rental.h:
#ifndef RENTAL_H#define RENTAL_H#include "movie.h"class Rental{public:Rental(Movie movie, int daysRented);double getCharge();int getDaysRented();Movie getMovie();int getFrequentRenterPoints();private:Movie _movie;int _daysRented;};#endif //RENTAL_H
rental.cpp:
#include "rental.h"Rental::Rental(Movie movie, int daysRented){_movie = movie;_daysRented = daysRented;}double Rental::getCharge(){return _movie.getCharge(_daysRented);}int Rental::getDaysRented(){return _daysRented;}Movie Rental::getMovie(){return _movie;}int Rental::getFrequentRenterPoints() {return _movie.getFrequentRenterPoints(_daysRented);}
movie.h:
#ifndef MOVIE_H#define MOVIE_H#include <string>using std::string;class Movie{public:Movie(string title = "empty", int priceCode = 0);double getCharge(int daysRented);int getFrequentRenterPoints(int daysRented);int getPriceCode();void setPriceCode(int arg);string getTitle();public:static const int REGULAR;static const int NEW_RELEASE;static const int CHILDRENS;private:string _title;int _priceCode;};#endif //MOVIE_H
movie.cpp:
#include "movie.h"const int Movie::REGULAR = 0;const int Movie::NEW_RELEASE = 1;const int Movie::CHILDRENS = 2;Movie::Movie(string title , int priceCode){_title = title;_priceCode = priceCode;}double Movie::getCharge(int daysRented){double result = 0;// determine amounts for each lineswitch(getPriceCode()){case REGULAR:result += 2;if (daysRented > 2){result += (daysRented - 2) * 1.5;}break;case NEW_RELEASE:result += daysRented * 3;break;case CHILDRENS:result += 1.5;if (daysRented > 3){result += (daysRented - 3) * 1.5;}break;}return result;}int Movie::getFrequentRenterPoints(int daysRented) {// add bonus for a two day new release rentalif ((getPriceCode() == NEW_RELEASE) && daysRented > 1)return 2;elsereturn 1;}int Movie::getPriceCode(){return _priceCode;}void Movie::setPriceCode(int arg){_priceCode = arg;}string Movie::getTitle(){return _title;}
- 《重构--改善既有代码的设计》读书笔记之四:将条件分支语句放入合适类中
- 重构-改善既有代码的设计读书笔记(四)
- 读书笔记之《重构-改善既有代码的设计》第一章
- PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
- PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
- 《重构--改善既有代码的设计》读书笔记之五:运用多态取代条件逻辑(if/else , switch)
- 重构改善既有代码的设计--简化条件表达式
- 重构改善既有代码的设计--简化条件表达式
- 重构改善既有代码的设计:简化条件表达式
- 《重构改善既有代码的设计》之重构列表--简化条件表达式(一)
- 《重构改善既有代码的设计》之重构列表--简化条件表达式(二)
- 《重构-改善既有的代码设计》读书笔记
- 《重构----改善既有代码的设计》读书笔记
- 重构--改善既有代码的设计--读书笔记1
- 重构 改善既有的代码设计——读书笔记
- 重构 改善既有代码的设计 读书笔记1
- 重构 改善既有代码的设计(读书笔记1)
- 重构 改善既有代码的设计(读书笔记2)
- spring 使用JdbcTemplate
- POJ-1182-食物链
- AS3.0版本 打开ppt
- Struts的properties国际化文件的编码问题及解决方案
- CHM格式文件无法打开的解决方法。
- 《重构--改善既有代码的设计》读书笔记之四:将条件分支语句放入合适类中
- 50个你现在应该去使用的最新的出色的jQuery插件
- 查看执行计划
- 26条时间管理技巧
- DBLINK数据计算优化
- XP安装Fedora18
- 第六周项目三----平面坐标类
- 编程之美2013 资格赛 第一题 解题报告
- 图像增强之直方图均衡化