我经常有基于特定明确算法的代码。这得到了很好的评论,看起来很合适。对于大多数数据集,该算法效果很好。
但是随后添加了边缘情况、特殊情况、启发式方法来解决特定数据集的特定问题。随着特例越来越多,评论也越来越模糊。我害怕在一年左右的时间里回头查看这段代码,并试图记住为什么要添加每个特定的特殊情况或启发式。
有时我希望有一种方法可以在源代码中嵌入或链接图形,所以我可以有效地说,“在这个数据集的图表中,这里的这个特殊功能导致例程错误地触发,所以这就是为什么这个添加了代码”。
处理这种情况的最佳实践是什么?
似乎总是需要特殊情况来处理这些不寻常/边缘情况。如何管理它们以保持代码的相对可读性和可理解性?
考虑一个处理照片特征识别的示例(不完全是我正在研究的内容,但类比似乎很恰当)。当我发现通用算法失败并且需要特殊情况的特定图片时,我会尽我所能在评论中记录该信息,(或如下面的建议,描述性函数名称)。但通常缺少的是指向显示相关行为的特定数据文件的永久链接。虽然我的评论应该描述该问题,并且可能会说“请参阅文件 foo.jp 以获取此行为的示例”,但此文件永远不会在源代码树中,并且很容易丢失。
在这种情况下,人们是否将数据文件添加到源树以供参考?