安忍不动如大地,静虑深思如秘藏
雄鹰虽然有时候飞的比鸡还低 但鸡永远也不可能飞到鹰的高度

好了,在经历了面向过程的代码之后,我们来观察以下使用面向对象思路的代码:

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)

{

//负号非法

format = false;

}

s = s.Replace("-", "");

if (s.LastIndexOf('.') > -1 && s.Length - s.LastIndexOf('.') > precision + 1)

{

//精度非法

format = false;

}

string tmpStr = s.Replace(".", "");

for (int i = 0; i <= tmpStr.Length - 1; i++)

{

if (!char.IsNumber(tmpStr[i]))

{

//有非数字的字符

format = false;

break;

}

}

if (s.Split('.')[0] != int.Parse(s.Split('.')[0]).ToString())

{

//整数的前导有0

format = false;

}

System.Console.WriteLine(format);

上述的代码结构非常清晰,编写者抓住了需求的本质是检查数字的合法性,因此在代码的编写过程中将那些影响数字的前缀都一一过滤,以可以实现结构合理的代码块了。

posted on 2009-08-01 17:07  害羞的狮子王  阅读(268)  评论(0编辑  收藏  举报