具有用于编译时检查的示例值是否常见?它们应该放在代码中的什么位置?
我有一个相当复杂的数据类型和记录结构,通过查看不熟悉代码库的人的生产代码并不容易理解。
为了理解它,我创建了这种具有两个优点的虚拟函数:1. 它们在编译时被检查 2. 它们作为某种文档,展示数据类型的整体结构如何和记录混合在一起:
-- benefit 1: a newcomer can quickly make sense of the type system
-- benefit 2: easier to keep track of how the types evolve because of compile-time checking
exampleValue1 :: ApiResponseContent
exampleValue1 = ApiOnlineResponseContent [
OnlineResultRow (EntityId 10) [Just (FvInt 1), Just (FvFloat 1.5), Nothing],
OnlineResultRow (EntityId 20) [Just (FvInt 2), Nothing, Just (FvBool True)]
]
唯一让我有点困扰的是,他们觉得放在生产代码中有点尴尬,因为它们显然是死代码。然而,它们也不是测试,它们只是编译时检查的示例,说明如何从复杂的嵌套类型将值组合在一起。因此,它们显然不属于生产代码,但也不完全属于测试。
拥有这种编译时示例是常见的做法吗?它们应该放在代码库中的什么位置?