数据结构与数据有效性

模型是对事物的描述,而数据结构往往会迎合对事物描述的需求,我们在设计数据结构的时候往往只在乎数据的组织形式,却很少在意数据的有效性。

也就是说,数据结构不应该只是某个模型应该有那几个部分这样的描述,还应该有这个模型的数据的范围。

比如,我们可以使用字符串描述人的性别,但是,并不是所有的字符串都是性别。所以在使用字符串描述人的性别的时候需要对字符串的边界进行限制。如果需要更准确的描述,我们会使用枚举在描述性别。虽然简单的使用字符串描述性别很多情况下也是可用的,但是相比之下,使用枚举可以描述的更准确,并且减少错误数据的出现。

在有限的资源条件下,我们永远不可能准确的描述一个事物,因为从我们现在的视角去看,信息的量是无限的,但是在实际应用中,我们理应调用有限的资源,尽可能准确的描述事物。

遗憾的是,现在流行的任何编程语言都没有描述数据有效性的机制。

比如,我们要描述一个人的年龄,我们通常不会用到大于200的数字,但是你向一个描述年龄的变量赋值200的时候,并不会接收到任何提醒。

为了解决这个问题,我们通常会在数据的有效性影响程序的正确之前对数据进行检查,这在一定程度上可以解决问题。

借鉴这个思路,我们最好在初始化实例的时候对数据进行检查,这样在之后的任何运算中都不会因为数据超出有效范围发生错误。

那么我们就应该在模型实例化函数中添加有效性检查。

当然,我更希望在声明模型的时候同时声明数据的约束,把检查的任务交给编程语言去解决,而不是反反复复的编写有效性检查程序。