fputcsv命令,寫csv文件,遇到的小問題

Move Method


概述


程式中,有個函數與其所駐class之外的另一個class進行更多交流,調用後者或被後者調用


動機(Motivation)


如果一個class有太多行為,或如果一個class與另一個class有太多合作而形成高度耦合(highly coupled),我們就會搬移函數。通過這種手段,我們可以使系統中的classes更簡單,這些classes最終也將更幹凈利落地實現系統交付的任務。


示例

  public class MoveMethod
{
private AccountType _type;
private int _daysOverdrawn;
public double OverDraftCharge()
{
if (_type.IsPremium())
{
double result = 10;
if (_daysOverdrawn > 7)
result += (_daysOverdrawn – 7) * 0.85;
return result;
}
else
return _daysOverdrawn * 1.75;
}
public double BankCharge()
{
double result = 4.5;
if (_daysOverdrawn > 0)
result += OverDraftCharge();
return result;
}
}

public class AccountType
{
public bool IsPremium()
{
return true;
}
}


 


 


改為

    public class MoveMethod
{
private AccountType _type;

public double BankCharge()
{
double result = 4.5;
if (_type._daysOverdrawn > 0)
result += _type.OverDraftCharge();
return result;
}
}

public class AccountType
{
private int _daysOverdrawn;

public int DaysOverdrawn
{
get { return _daysOverdrawn; }
set { _daysOverdrawn = value; }
}

public bool IsPremium()
{
return true;
}

public double OverDraftCharge()
{
if (IsPremium())
{
double result = 10;
if (_daysOverdrawn > 7)
result += (_daysOverdrawn – 7) * 0.85;
return result;
}
else
return _daysOverdrawn * 1.75;
}
}


 


 


Move Field(搬移值域)


概述


在target class建立一個new field,修改source field的所有用戶,令它們改用new field。


動機(Motivation)


對於一個field(值域),在其所駐class之外的另一個class中有更多函數使用瞭它,我就會考慮搬移這個field。


示例

    public class MoveMethod
{
private AccountType _type;
private double _interestRate;
public double InterestForAmountDay(double amount,int days)
{
return _interestRate * amount * days / 365;
}
}

public class AccountType
{

}


 


 


改為

    public class MoveMethod
{
private AccountType _type;

public double InterestForAmountDay(double amount, int days)
{
return _type.InterestRate * amount * days / 365;
}
}

public class AccountType
{
private double _interestRate;
public double InterestRate
{
get { return _interestRate; }
set { _interestRate = value; }
}
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *