面向过程的代码往往被人形容为意大利面条。先让我们看看以下面向过程思路的代码编写。

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

意大利面条:面向过程的代码模型相关推荐

  1. HALCON:如何结合面向对象和面向过程的代码

    HALCON:如何结合面向对象和面向过程的代码

  2. 面向对象和面向过程的区别以及封装继承多态的优缺点

    面向对象和面向过程的区别: 1.思路不同 2.特点不同 3.优势不同. 面向过程是直接将解决问题的步骤分析出来,然后用函数把步骤一步一步实现,然后再依次调用就可以了:而面向对象是将构成问题的事物,分解 ...

  3. 面向对象淡入淡出轮播图(附带面向过程)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 面向过程(POP)与面向对象(OOP)

    面向过程(POP)与面向对象(OOP) 面向对象编程(Object Oriented Programing)简写为OOP 面向过程 (Procedure Oriented Programing) 简写 ...

  5. 零钱通案例---面向过程实现

    要求: 模仿写一个微信零钱通信息,如下图所示: 输出这样的: 我们先通过面向过程来完成这样一个要求,后面在通过面向过程的方法去写面向对象的方法: 在整个过程中,我们应该通过化繁为简的思路去完成,其中已 ...

  6. 对比面向过程方法和面向对象方法的优劣(全)

    对比面向过程方法和面向对象方法的优劣(全) 前言: 面对这个问题,我们首先能想到两个代表性的语言C/C++,亦或是Java.区别大,优劣也区别明显.我们刚开始学习编程时都会面对"HelloW ...

  7. php是面向对象还是过程,PHP面向过程和面向对象

    php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...

  8. 面向过程与面向对象概述

    1.面向过程与面向对象的区别 面向过程关心的是过程,面向过程就是分析出解决问题需要的步骤,然后用函数将这些步骤依次调用实现. 面向对象关心的是对象之间的交互,面向对象是把问题分解为各个对象,然后分析每 ...

  9. 用纯C面向过程写icefox3的代码

    用纯C面向过程写icefox3的代码 « Xiaoxia[PG] 用纯C面向过程写icefox3的代码 6月底在Ubuntu下写了个框架,这几天发现写不下去了,又重新用Codelite组建了一次代码. ...

  10. 哪些代码设计看似是面向对象,实际是面向过程的?

    文章目录 1. 滥用 getter.setter 方法 2. 滥用全局变量.全局方法 3. 数据.方法分离 学习自 极客时间<设计模式之美> 1. 滥用 getter.setter 方法 ...

最新文章

  1. 执行cp命令时提示cp: 略过目录
  2. 如何进入、退出docker的container
  3. Gym101128F:Landscaping
  4. oracle执行减法,oracle时间的加法和减法
  5. 交换机设备登录账号权限1_在交换机中用户权限分为几个级别 分别是什么
  6. Demo:充分利用 Ajax 技术 来体现页面局部刷新 效果(获取天气预报情况)
  7. RyuJIT的华丽转身
  8. 数据结构(终极线段树篇)
  9. java打印数组_Java中打印数组内容的方式有哪些?
  10. 以太坊PoA共识引擎算法介绍(1)
  11. 使用Highcharts实现柱状图展示
  12. 1至100之和用c语言表达方式,C语言菜鸟基础教程之求1到100的和
  13. Security+ 学习笔记16 密钥管理
  14. 10条思科文件管理命令帮你做到称职网管
  15. 网络安全(加密技术、数字签名、证书)
  16. Linux Mint 21编译Android kernel,遇到 multiple definition of `yylloc‘ 的错误解决
  17. 极大值,极小值算法以及α-β剪枝技术
  18. 一步一步教你搭建jenkins
  19. 学界 | 大数据背景下,景观研究怎么做?
  20. 从矿工到农民的失落感

热门文章

  1. Windows Server 2012 R2 WSUS-3:安装服务器角色
  2. 12. Laravel 4 迁移数据填充
  3. 最为奇怪的程序语言的特性
  4. django 开发 - 小心模板文件的编码格式(utf-8)
  5. Python3 encode中的unicode-escape和raw_unicode_escape
  6. 下载python的步骤ios_如何使用 Python 开发 iOS 程序?
  7. java socket 组包_关于socket 分包和组包
  8. Redis Zui佳实践:7个维度+43条使用规范,带你彻底玩转Redis
  9. redis强一致性_Redis的8连击,验证你是否熟练掌握Redis核心知识点。
  10. linux主机ip数据包抓取,tcpdump和ngrep抓不到本机数据包