问题描述
我在开发Clojure项目时,有时会遇到这样的情况:地图集合的关键字重命名有些困难。
例如,如果我有一个由多个命名空间共享的地图集合。然后,这些命名空间将取决于此映射集合的关键字,因为在这些命名空间中定义的函数使用映射销毁语法。当我重命名这个地图集合的关键字时,我肯定需要彻底检查那些命名空间。
解决方法
当您使用不合格的 :x
表示四十种不同的含义,然后决定重命名其中一个时,这将是一个挑战。如果您没有(并且不想制作)足以检测预期参数丢失的测试用例,那么挑战就会变得令人头疼。
下次,考虑为将广泛使用的用途指定(唯一)命名空间限定的关键字。替换是明确的,工具更有可能将其自动化。
一些语言功能可以帮助您重新编写代码,具体取决于您决定重命名内容的范围的规模。
先决条件给你一个地方来断言一个解构的论点(或者只是记录它,如果你需要逐个判断成功)。
纯函数允许您克隆一堆代码,重命名克隆版本中的内容(或修改任何逻辑),然后并行运行两个版本并断言它们想出了相同的结果。例如,将函数 f
克隆为 f-1
和 f-2
,返工 f-2
,并重新编程 f
,使其同时调用 f-1
和 {{1 }} 并断言结果相同。当他们同意时,您可以删除原件。
测试使用内置的 f-2
非常容易(并且还有更精细的替代方案)。