在REPL进行编程

2020-07-10 23:38:50

Clojure REPLS的用途非常广泛,从学习语言到数据探索,再到现场音乐表演,不一而足。本章将为将Clojure REPLS应用于更常见的实用软件开发用例提供一些指导原则。

您应该将REPL视为另一种用户到程序交互的媒介;与上面列出的那些相比,它需要高深的知识(用Clojure编程!),但它也非常具有表现力,而且开发成本很低,因为它几乎不需要预期用户会利用代码的哪些部分。例如,REPL是非常适合即席数据导出的UI。

在Clojure项目中,通常的做法是定义专门用于REPL交互的函数和名称空间:可以将其视为CLI、仪表板等的替代。

REPL可以给你很大的速度,但不要把动作误认为是进步,你应该总是带着一个计划来到REPL,否则REPL会给你带来更多的分心而不是注意力。如果你发现在使用REPL的同时很难记住这个计划,可以考虑把它写下来。

REPL只会引导你经历非常渐进的变化,这很容易让你陷入局部的最大限度。当需要更多的战略思考时,强迫自己后退一步。特别值得一提的是,快速反馈不能替代软件设计和解决问题的方法论。

REPL是一种非常短暂和排他性的媒介。如果要从REPL会话中获得任何东西,那么它可能应该驻留在您有缺陷的人类内存之外的其他位置(例如,incode、测试、注释掉的代码、文档、数据文件等)。

如果您在REPL中学到的内容是您项目的先决条件,那么您应该做一些额外的工作来使其他贡献者(包括几个月后的您自己)能够访问它。

没有理由认为这些方法与REPL辅助开发竞争,而且REPL经常可以帮助您使用它们。这些方法各有长处和短处:例如,REPL使程序的执行变得非常有形,但不是一个很好的检测破坏的工具。