意大利面条:面向过程的代码模型
面向过程的代码往往被人形容为意大利面条。先让我们看看以下面向过程思路的代码编写。
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 ? "正确" : "错误");
以上的代码并没有全部写完,笔者已经感觉到头晕脑涨了,不知道读者看完以后感觉是否良好。如果你现在感觉还不错,那请继续把这个代码完成。
面向过程的考虑,就是自上而下,逢山开路,遇水架桥,代码中充满了分支和判断,非常典型的代码就是最后你可以看到无数的“}”在那里,令你头晕至极。
转载于:https://www.cnblogs.com/shyleoking/archive/2009/08/01/1536602.html
意大利面条:面向过程的代码模型相关推荐
- HALCON:如何结合面向对象和面向过程的代码
HALCON:如何结合面向对象和面向过程的代码
- 面向对象和面向过程的区别以及封装继承多态的优缺点
面向对象和面向过程的区别: 1.思路不同 2.特点不同 3.优势不同. 面向过程是直接将解决问题的步骤分析出来,然后用函数把步骤一步一步实现,然后再依次调用就可以了:而面向对象是将构成问题的事物,分解 ...
- 面向对象淡入淡出轮播图(附带面向过程)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 面向过程(POP)与面向对象(OOP)
面向过程(POP)与面向对象(OOP) 面向对象编程(Object Oriented Programing)简写为OOP 面向过程 (Procedure Oriented Programing) 简写 ...
- 零钱通案例---面向过程实现
要求: 模仿写一个微信零钱通信息,如下图所示: 输出这样的: 我们先通过面向过程来完成这样一个要求,后面在通过面向过程的方法去写面向对象的方法: 在整个过程中,我们应该通过化繁为简的思路去完成,其中已 ...
- 对比面向过程方法和面向对象方法的优劣(全)
对比面向过程方法和面向对象方法的优劣(全) 前言: 面对这个问题,我们首先能想到两个代表性的语言C/C++,亦或是Java.区别大,优劣也区别明显.我们刚开始学习编程时都会面对"HelloW ...
- php是面向对象还是过程,PHP面向过程和面向对象
php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...
- 面向过程与面向对象概述
1.面向过程与面向对象的区别 面向过程关心的是过程,面向过程就是分析出解决问题需要的步骤,然后用函数将这些步骤依次调用实现. 面向对象关心的是对象之间的交互,面向对象是把问题分解为各个对象,然后分析每 ...
- 用纯C面向过程写icefox3的代码
用纯C面向过程写icefox3的代码 « Xiaoxia[PG] 用纯C面向过程写icefox3的代码 6月底在Ubuntu下写了个框架,这几天发现写不下去了,又重新用Codelite组建了一次代码. ...
- 哪些代码设计看似是面向对象,实际是面向过程的?
文章目录 1. 滥用 getter.setter 方法 2. 滥用全局变量.全局方法 3. 数据.方法分离 学习自 极客时间<设计模式之美> 1. 滥用 getter.setter 方法 ...
最新文章
- 执行cp命令时提示cp: 略过目录
- 如何进入、退出docker的container
- Gym101128F:Landscaping
- oracle执行减法,oracle时间的加法和减法
- 交换机设备登录账号权限1_在交换机中用户权限分为几个级别 分别是什么
- Demo:充分利用 Ajax 技术 来体现页面局部刷新 效果(获取天气预报情况)
- RyuJIT的华丽转身
- 数据结构(终极线段树篇)
- java打印数组_Java中打印数组内容的方式有哪些?
- 以太坊PoA共识引擎算法介绍(1)
- 使用Highcharts实现柱状图展示
- 1至100之和用c语言表达方式,C语言菜鸟基础教程之求1到100的和
- Security+ 学习笔记16 密钥管理
- 10条思科文件管理命令帮你做到称职网管
- 网络安全(加密技术、数字签名、证书)
- Linux Mint 21编译Android kernel,遇到 multiple definition of `yylloc‘ 的错误解决
- 极大值,极小值算法以及α-β剪枝技术
- 一步一步教你搭建jenkins
- 学界 | 大数据背景下,景观研究怎么做?
- 从矿工到农民的失落感
热门文章
- Windows Server 2012 R2 WSUS-3:安装服务器角色
- 12. Laravel 4 迁移数据填充
- 最为奇怪的程序语言的特性
- django 开发 - 小心模板文件的编码格式(utf-8)
- Python3 encode中的unicode-escape和raw_unicode_escape
- 下载python的步骤ios_如何使用 Python 开发 iOS 程序?
- java socket 组包_关于socket 分包和组包
- Redis Zui佳实践:7个维度+43条使用规范,带你彻底玩转Redis
- redis强一致性_Redis的8连击,验证你是否熟练掌握Redis核心知识点。
- linux主机ip数据包抓取,tcpdump和ngrep抓不到本机数据包