实战经验:时刻关注类对象内部数据成员状态( 二 )

修改后的代码

以上修改后的类定义 , 在各个方法实现上 , 添加了对类内部数据成员m_hThread的状态判定:

1) 类构造函数首先在类对象实例化时 , 立即对类的内部数据成员做初始化 , 并将合理的初始值设置到数据成员 。

2) Init实现上 , 首先检查数据成员 , 仅当数据成员符合一定的逻辑条件时才做出动作 , 否则提示系统内部逻辑错误 。

3) Destroy实现同Init , 在确保数据成员有效的情况下才继续做下一步动作 , 并且 , 在动作执行完毕后 , 立即将数据成员重置为初始值NULL 。

4) 类析构函数也在具体的资源释放动作进行之前 , 对类的数据成员做了一次判定 , 如果之前Destroy调用成功 , 则此处的m_hThread为空 , 就避免了对句柄做出重复的CloseHandle调用 。

总结

有时候 , 我们在编写小程序时 , 往往会贪图简单 , 将类的数据成员的逻辑状态的合理检测给省略掉了 , 因为此时程序还小 , 我们可以一眼就看出错误出在哪里 。 但随着系统内部逻辑越来越复杂 , 程序规模越来越大 , 我们就很难追踪程序内部的逻辑混乱导致的崩溃问题 。

推荐阅读