善于使用状态会使你的程序可读性大大提高。
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. js 字符串转换成数字的 三种方法
  2. 中video拖动_【小功能】UE4中实现UI的拖拽
  3. 树状数组基础原理与模板
  4. Cadence元器件库
  5. java ee 学习目标
  6. Mysql索引类型分析
  7. jQuery源码研究学习笔记(二)
  8. android 开启dlna音乐服务_新品丨数字流媒体新宠——Stack Audio Link USB音乐播放器...
  9. 启牛商学院计算机,启牛商学院达摩老师教你三招成为跨界理财达人
  10. 大规模C++软件开发 - notes
  11. 智慧型数据中心露峥嵘
  12. 深度学习超参数简单理解:learning rate,weight decay和momentum
  13. 一句代码搞定权限请求,从未如此简单
  14. 人物简介——奥古斯塔·德摩根
  15. matlab新建数据字典及如何导入
  16. 第一章 基本架设服务器流程
  17. mvcnn代码详解_使用colab运行tensorflow版本的faster-rcnn
  18. 低血压形成的原因和治疗方法
  19. 【if语句与表达式】
  20. 【TensorRT】PyTorch模型转换为ONNX及TensorRT模型

热门文章

  1. Android的代码同步repo
  2. 光纤测试、OTDR使用经验、FS530OTDR使用经验
  3. Struts2.0 + Spring2.5 + Hibernate3.3开发环境的配置(1)
  4. bean的作用域——Spring对bean的管理(二)
  5. es6的模块化export和import
  6. Ajax学习笔记-客户端模板引擎-9
  7. shell编程四剑客之 grep
  8. bgp状态idle什么原因_27-高级路由:BGP状态
  9. if函数判断单元格颜色_IF条件函数10大用法完整版,全会是高手,配合SUMIF,VLOOKUP更逆天...
  10. matlab gui gif,gui界面可以显示gif动态图,但结束时会报错