• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 沒有單元測試,何談重構(2)

    發表于:2017-03-31來源:jianshu作者:溪石iOS點擊數: 標簽:重構
    //// Demand.h// RefactorDemo//// Created by xishi on 16/10/29.// Copyright ? 2016年 xs. All rights reserved.// #import Foundation/Foundation.h typedef NS_ENUM(NSUInteger, TimePeriodEnum) { TimePeriod

     

    //
    //  Demand.h
    //  RefactorDemo
    //
    //  Created by xishi on 16/10/29.
    //  Copyright ? 2016年 xs. All rights reserved.
    //

    #import <Foundation/Foundation.h>
    typedef NS_ENUM(NSUInteger, TimePeriodEnum) {
    TimePeriodEnumWorkDaytime = 1,
    TimePeriodEnumWorkNight = 2,
    TimePeriodEnumWeekend = 3
    };

    @class Movie;
    @interface Demand : NSObject
    @property(nonatomic) Movie *movie;
    @property(nonatomic, assign) int timePeriod;

    - (id)initWithMovie:(Movie *)movie
    timePeriod:(TimePeriodEnum)timePeriod;
    @end

     

     

    //
    //  Demand.m
    //  RefactorDemo
    //
    //  Created by xishi on 16/10/29.
    //  Copyright ? 2016年 xs. All rights reserved.
    //

    #import "Demand.h"
    #import "Movie.h"

    @implementation Demand
    - (id)initWithMovie:(Movie *)movie
    timePeriod:(TimePeriodEnum)timePeriod {
    self = [super init];
    if (self) {
    _movie = movie;
    _timePeriod = timePeriod;
    }
    return self;
    }
    @end

     

    顧客類:

     

    //
    //  Customer.h
    //  RefactorDemo
    //
    //  Created by xishi on 16/10/29.
    //  Copyright ? 2016年 xs. All rights reserved.
    //

    #import <Foundation/Foundation.h>

    @class Demand;
    @interface Customer : NSObject
    - (id)initCustomerWithName:(NSString *)name;
    - (void)addDemand:(Demand *)demand;
    - (NSString *)statement;
    @end

     

     

    //
    //  Customer.m
    //  RefactorDemo
    //
    //  Created by xishi on 16/10/29.
    //  Copyright ? 2016年 xs. All rights reserved.
    //

    #import "Customer.h"
    #import "Demand.h"
    #import "Movie.h"
    @interface Customer () {
    NSString *_name;
    NSMutableArray *_demands;
    }
    @end
    @implementation Customer
    - (id)initCustomerWithName:(NSString *)name {
    self = [super init];
    if (self) {
    _name = name;
    }
    return self;
    }

    - (void)addDemand:(Demand *)demand {
    if (!_demands) {
    _demands = [[NSMutableArray alloc] init];
    }
    [_demands addObject:demand];
    }

    - (NSString *)statement {
    double totalAmount = 0;
    int frequentDemandPotnts = 0;
    NSMutableString *result = [NSMutableString stringWithFormat:@"%@的點播清單\\\\n", _name];
    for (Demand *aDemand in _demands) {
    double thisAmount = 0;

    // 根據不同電影定價:
    switch (aDemand.movie.priceCode) {
    case MovieEnumRegular:
    thisAmount += 2; // 普通電影2元一次
    break;

    case MovieEnumNewRelease:
    thisAmount += 3; // 新電影3元一次
    break;

    case MovieEnumChildrens:
    thisAmount += 1.5; // 兒童電影1.5元一次
    }

    // 根據不同時段定價:
    if (aDemand.timePeriod == TimePeriodEnumWorkDaytime)
    thisAmount *= 1.0; // 工作日全價
    else
    if (aDemand.timePeriod == TimePeriodEnumWeekend) {
    thisAmount *= 0.5; // 周末半價
    }
    else
    if (aDemand.timePeriod == TimePeriodEnumWorkNight){
    thisAmount *= 1.5; // 下班1.5倍
    }

    frequentDemandPotnts++;
    // 周末點播新片積分翻倍:
    if ((aDemand.movie.priceCode == MovieEnumNewRelease) &&
    aDemand.timePeriod == TimePeriodEnumWeekend) {
    frequentDemandPotnts++;
    }

    [result appendFormat:@"\\\\t%@\\\\t%@ 元\\\\n", aDemand.movie.title, @(thisAmount)];
    totalAmount += thisAmount;
    }

    [result appendFormat:@"費用總計 %@ 元\\\\n", @(totalAmount).stringValue];
    [result appendFormat:@"獲得積分 %@", @(frequentDemandPotnts).stringValue];

    return result;
    }
    @end

    原文轉自:http://www.jianshu.com/p/0b4fd636ad2c

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>