好了,在經曆了面向過程的代碼之後,我們來觀察以下使用面向對象思路的代碼:
string s = "12.14";
bool format = true;
int precision = 2;
char symbol = '$';
if (s.LastIndexOf(symbol) > 0)
{
//貨币負号非法
format = false;
}
s = s.Replace(symbol, ' ');
if (s.LastIndexOf('.') > 0)
//負号非法
s = s.Replace("-", "");
if (s.LastIndexOf('.') > -1 && s.Length - s.LastIndexOf('.') > precision + 1)
//精度非法
string tmpStr = s.Replace(".", "");
for (int i = 0; i <= tmpStr.Length - 1; i++)
if (!char.IsNumber(tmpStr[i]))
//有非數字的字元
break;
if (s.Split('.')[0] != int.Parse(s.Split('.')[0]).ToString())
//整數的前導有0
System.Console.WriteLine(format);
上述的代碼結構非常清晰,編寫者抓住了需求的本質是檢查數字的合法性,是以在代碼的編寫過程中将那些影響數字的字首都一一過濾,以可以實作結構合理的代碼塊了。
本文轉自shyleoking 51CTO部落格,原文連結:http://blog.51cto.com/shyleoking/805133