善于使用状态会使你的程序可读性大大提高。
If---Else style的代码看起来这样:
if(m_pObject1->GetStatus1() && m_pObject2->GetStatus2() && m_pObject3->GetStatus3())
// Do something here;
else if(!m_pObject1->GetStatus1() && m_pObject2->GetStatus2())
// Do something here;
else if......
这种状态复合的程序看起来一定很累,而且要是加了什么新功能,肯定语句就变得混乱,最后代码就越来越难看懂了。
如果刚开始就定义好状态,代码就变成这样:
switch(m_pObject1->GetStatus1())
{
   case O1S1_1:
   {
      switch(m_pObject2->GetStatus2())
      {
         case O2S2_1:
            ...
         switch(m_pObject3->GetStatus3())
         {
            case O3S3_1:
            ...
         }
      }
   }
}

这在状态复杂的程序中能够更好的表达逻辑,更方便以后的维护。在增加功能之后,只是要处理的状态表格变大了,对程序原有的逻辑影响比较小。

Note:尝试采用状态法写逻辑状态复杂的程序。

转载于:https://www.cnblogs.com/raulzhang/archive/2005/02/22/107637.html

bug人生--状态在编程中的使用相关推荐

  1. 在TFS中通过程序动态创建Bug并感知Bug解决状态

    为便于跟踪问题解决情况,预警引擎产生的比较严重的预警日志,需要在TFS中登记Bug,通过TFS的状态流转,利用TFS Bug的Web挂钩功能,动态感知Bug解决状态,从而跟踪预警问题的解决状态, 整体 ...

  2. 后端技术:Java编程中忽略这些细节,Bug肯定少不了

    在Java语言的日常编程中,也存在着容易被忽略的细节,这些细节可能会导致程序出现各种Bug. Java语言构建的各类应用程序,在人类的日常生活中占用非常重要的地位,各大IT厂商几乎都会使用它来构建自己 ...

  3. Java编程中忽略这些细节,Bug肯定找上你

    摘要:在Java语言的日常编程中,也存在着容易被忽略的细节,这些细节可能会导致程序出现各种Bug. 本文分享自华为云社区<Java编程中容易忽略的细节总结丨[奔跑吧!JAVA]>,作者:j ...

  4. 怎样减少Java编程中bug数量?

    Java编程语言在IT行业毋庸置疑是企业中不可缺少的,现今企业招收大量Java人才,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能. 不过在编写代码时,bug永 ...

  5. 川川给你洗脑之:编程中的状态与并发

    今天,是我们的第一节课,在本课中,我们的目标是-- 要洗脑,应该使用磨砂轮的电锯切开头骨,因为磨砂轮切割产生的高温可以使血液迅速凝固,而不会飞溅的到处都... 不好意思拿错书了... 不闹了,正文开始 ...

  6. python获取输入法状态_Python学习中常见的错误

    本文适合有编程基础,现在正在学习Python的学习者. 个人以为程序设计是一件非常惬意的事情, 坐在电脑旁边,敲敲键盘就可以控制电脑完成一些处理工作.一个回车键屏幕就输出一大堆的信息,而且都是自己需要 ...

  7. [译文]过犹不及,别再在编程中高射炮打蚊子

    原文链接:Anyway,stop recommending bazookas to kill flies in programming. 众成翻译地址:过犹不及,别再在编程中高射炮打蚊子 译者注:翻译 ...

  8. Python编程中一些异常处理的小技巧

    编程中经常会需要使用到异常处理的情况,在阅读了一些资料后,整理了关于异常处理的一些小技巧记录如下. 1 如何自定义异常 1.1 定义异常类 在实际编程中,有时会发现Python提供的内建异常的不够用, ...

  9. 实例解析网络编程中的另类内存泄漏

    本文分享自华为云社区<[网络编程开发系列]一种网络编程中的另类内存泄漏>,作者:架构师李肯. 1 写在前面 最近在排查一个网络通讯的压测问题,最后发现跟"内存泄漏"扯上 ...

  10. 多核心CPU并行编程中为什么要使用内存屏障 memory barriers / 内存栅栏 memory fence

    文章目录 前言 现代Intel® CPU架构 指令集 CISC, RICS ... Intel各个时期的CPU微架构(microarchitecture)特点 P6 Family Microarchi ...

最新文章

  1. 【网络流】解题报告:luogu P2740 [USACO4.2]草地排水Drainage Ditches(Edmonds-Karp增广路,最大流模板)
  2. 搞垮服务的20条原则
  3. 线程间操作无效:从不是创建控件的线程访问它的三种方法
  4. 只允许指定IP远程桌面连接_使用IP安全策略
  5. android 常驻轮询服务,Android实现自动轮询的RecycleView
  6. jsp需要多少java基础_Java基础——JSP(一)
  7. 十一、垃圾回收策略配置
  8. 每天半小时,成功通过PMP!!!
  9. 蒙特卡洛模拟 matlab实例,蒙特卡洛模拟的简单例子
  10. 利用JS实现QQ空间自动点赞
  11. SpringBoot 配置文件加载优先级
  12. 求助 NVIDIA GeForce experience安装失败
  13. OpenGL法线贴图
  14. 移动用户免费领取15G流量(秒到)
  15. 线上抓娃娃机火了三个月了,你玩了吗?
  16. 在window server虚拟机上搭建RAID1与RAID5阵列
  17. Windows 11强势来袭,一文带你了解全部更新内容
  18. icc校色文件使用教程_浅谈如何用ICC文件进行校色,校色前后效果展示
  19. FreeBSD安装中文字体和中文输入法
  20. python center() 函数

热门文章

  1. iOS边练边学--(Quartz2D)图片裁剪,带圆环的裁剪
  2. 祝微软北京.net俱乐部徐磊生日快乐
  3. ASP.NET 主题和外观
  4. java构造方法不允许调用重载方法
  5. [2018.03.14 T3] 圈圈(cyclic)
  6. 后台管理系统下载excel文件
  7. java中的内部类_Java中成员内部类的使用
  8. python thread start_Python中Thread类的start和run方法的区别
  9. nginx 文件服务器_nginx配置简单文件服务器
  10. cad直线和圆弧倒角不相切_建议收藏:史上最全CAD快捷键大全