层层清晰:面向对象的代码模型

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

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);

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

原文地址:https://www.cnblogs.com/shyleoking/p/1536604.html