博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
意大利面条:面向过程的代码模型
阅读量:6350 次
发布时间:2019-06-22

本文共 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/

你可能感兴趣的文章
linux内核--自旋锁的理解
查看>>
银行卡的三个磁道
查看>>
OpenSSL 提取 pfx 数字证书公钥与私钥
查看>>
Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】
查看>>
CollapsingToolbarLayoutDemo【可折叠式标题栏,顺便带有CardView卡片式布局】
查看>>
CentOS7.4安装配置mysql5.7 TAR免安装版
查看>>
解决IE二级链接无法打开故障
查看>>
Windows phone应用开发[16]-数据加密
查看>>
SQL Server 迁移数据到MySQL
查看>>
通用数据压缩算法简介
查看>>
The next Industry Standard in IT Monitoring, a python implementation Nagios like tool --- Shinken
查看>>
(笔记)找工作,该怎么进补
查看>>
div的显示和隐藏以及点击图标的更改
查看>>
(轉貼) Ubuntu將在ARM平台netbook上現身 (SOC) (News) (Linux) (Ubuntu)
查看>>
SQL注入测试工具:Pangolin(穿山甲)
查看>>
在html 的img属性里只显示图片的部分区域(矩形,给出开始点和结束点),其他部份不显示,也不要拉伸...
查看>>
程序员第二定律:量化管理在程序员身上永无可能
查看>>
ubuntu一些脚本的执行顺序
查看>>
类继承的结构
查看>>
Intel 被 ARM 逼急了
查看>>