面向過程的代碼往往被人形容為意大利面條。先讓我們看看以下面向過程思路的代碼編寫。
string s = "12.14";
bool format = true;
int precision = 2;
char symbol = '$';
if (s.LastIndexOf(symbol) > 0)
{
//貨币符号非法
format = false;
}
else
if (s.LastIndexOf(symbol) < 1)
//沒有貨币符号
if (s.LastIndexOf('-') > 0)
//負号非法
if (s.LastIndexOf('-') < 0)
//沒有負号
if (s.IndexOf('.') != s.LastIndexOf('.') || s.LastIndexOf('.') == s.Length || s.LastIndexOf('.') == 0)
//小數點非法
if (s.LastIndexOf('.') > -1 && s.Length - s.LastIndexOf('.') > precision + 1)
//精度非法
if (s.Split('.')[0] != int.Parse(s.Split('.')[0]).ToString())
//整數的前導有0
//有負号,沒有貨币符号
if (s.IndexOf('.') != s.LastIndexOf('.') || s.LastIndexOf('.') == s.Length || s.LastIndexOf('.') == 1)
if (s.LastIndexOf('.') > -1 && s.Length - s.LastIndexOf('.') > precision + 2)
if (s.Split('.')[0].Remove(1, 1) != int.Parse(s.Split('.')[0].Remove(1, 1)).ToString())
//有貨币符号
if (s.LastIndexOf('.') > 0)
if (s.LastIndexOf('.') > 1)
if (s.LastIndexOf('.') == 1)
//有貨币有負号
if (s.IndexOf('.') != s.LastIndexOf('.') || s.LastIndexOf('.') == s.Length || s.LastIndexOf('.') == 2)
if (s.LastIndexOf('.') > -1 && s.Length - s.LastIndexOf('.') > precision + 3)
//有貨币無負号
System.Console.WriteLine("該資料格式{0}", format ? "正确" : "錯誤");
以上的代碼并沒有全部寫完,筆者已經感覺到頭暈腦漲了,不知道讀者看完以後感覺是否良好。如果你現在感覺還不錯,那請繼續把這個代碼完成。
面向過程的考慮,就是自上而下,逢山開路,遇水架橋,代碼中充滿了分支和判斷,非常典型的代碼就是最後你可以看到無數的“}”在那裡,令你頭暈至極。
本文轉自shyleoking 51CTO部落格,原文連結:http://blog.51cto.com/shyleoking/805137