本文共 2290 字,大约阅读时间需要 7 分钟。
面向过程的代码往往被人形容为意大利面条。先让我们看看以下面向过程思路的代码编写。
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)
{
//负号非法
format = false;
}
else
{
if (s.LastIndexOf('-') < 0)
{
//没有负号
if (s.IndexOf('.') != s.LastIndexOf('.') || s.LastIndexOf('.') == s.Length || s.LastIndexOf('.') == 0)
{
//小数点非法
format = false;
}
else
{
if (s.LastIndexOf('.') > -1 && s.Length - s.LastIndexOf('.') > precision + 1)
{
//精度非法
format = false;
}
else
{
if (s.Split('.')[0] != int.Parse(s.Split('.')[0]).ToString())
{
//整数的前导有0
format = false;
}
}
}
}
else
{
//有负号,没有货币符号
if (s.IndexOf('.') != s.LastIndexOf('.') || s.LastIndexOf('.') == s.Length || s.LastIndexOf('.') == 1)
{
//小数点非法
format = false;
}
else
{
if (s.LastIndexOf('.') > -1 && s.Length - s.LastIndexOf('.') > precision + 2)
{
//精度非法
format = false;
}
else
{
if (s.Split('.')[0].Remove(1, 1) != int.Parse(s.Split('.')[0].Remove(1, 1)).ToString())
{
//整数的前导有0
format = false;
}
}
}
}
}
}
else
{
//有货币符号
if (s.LastIndexOf('.') > 0)
{
//货币符号非法
format = false;
}
else
{
if (s.LastIndexOf('.') > 1)
{
//负号非法
format = false;
}
else
{
if (s.LastIndexOf('.') == 1)
{
//有货币有负号
if (s.IndexOf('.') != s.LastIndexOf('.') || s.LastIndexOf('.') == s.Length || s.LastIndexOf('.') == 2)
{
//小数点非法
format = false;
}
else
{
if (s.LastIndexOf('.') > -1 && s.Length - s.LastIndexOf('.') > precision + 3)
{
//精度非法
format = false;
}
else
{
if (s.Split('.')[0].Remove(1, 1) != int.Parse(s.Split('.')[0].Remove(1, 1)).ToString())
{
//整数的前导有0
format = false;
}
}
}
}
else
{
//有货币无负号
if (s.IndexOf('.') != s.LastIndexOf('.') || s.LastIndexOf('.') == s.Length || s.LastIndexOf('.') == 1)
{
//小数点非法
format = false;
}
else
{
if (s.LastIndexOf('.') > -1 && s.Length - s.LastIndexOf('.') > precision + 2)
{
//精度非法
format = false;
}
else
{
if (s.Split('.')[0].Remove(1, 1) != int.Parse(s.Split('.')[0].Remove(1, 1)).ToString())
{
//整数的前导有0
format = false;
}
}
}
}
}
}
}
}
System.Console.WriteLine("该数据格式{0}", format ? "正确" : "错误");
以上的代码并没有全部写完,笔者已经感觉到头晕脑涨了,不知道读者看完以后感觉是否良好。如果你现在感觉还不错,那请继续把这个代码完成。
面向过程的考虑,就是自上而下,逢山开路,遇水架桥,代码中充满了分支和判断,非常典型的代码就是最后你可以看到无数的“}”在那里,令你头晕至极。
本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/805137
转载地址:http://ditla.baihongyu.com/