主要观点:作者分享了在 Clojure 开发中的各种经验和思考,包括交互式开发、不同组件间的耦合问题、各种库的使用及局限性等。
关键信息:
- 交互式开发在小系统中自然流畅,但随着系统增长需更多努力维持,其好处包括易进入心流状态、支持思维过程、部分替代单元和集成测试等,但其在系统演化中易受侵蚀。
- 系统组件间的紧密耦合(如初始化时加载所有配置文件等)会导致修改困难,需实现局部控制,如使用生命周期管理库。
- SQL 查询在交互式开发中较难实现,如 YeSQL 存储 SQL 为字符串无法组合等,HoneySQL 可将 SQL 表示为 Clojure 映射便于操作。
- 不同的开发场景如 Web 处理、依赖热加载、编辑器集成等在交互式开发中都有各自的问题和解决方法。
- 对于继承遗留代码,如 re-frame 项目,安装 re-frame-10x 可提高系统可检查性。
- 对 Clojure 中一些概念的误解,如对宏的扩展性认识等,后来有了新的理解。
- 介绍了多个项目和工具,如 Compass、Kaoha、Regal 等的开发和改进情况。
重要细节: - 详细阐述了系统各方面在交互式开发中受侵蚀的原因及解决办法,如组件生命周期管理、业务逻辑与服务解耦、SQL 查询处理、Web 处理相关问题、依赖热加载及编辑器集成等。
- 分享了在不同项目中的具体经历,如处理客户端的 rate limit 需求、优化代码质量、接管 re-frame 项目等。
- 提及了多个相关工具和库的特点及使用场景,如 mount、integrant、makina、YeSQL、HoneySQL、ring、reitit、sieppari 等。
- 讲述了自己对编程相关概念的思考,如编程与思考的关系、潜意识在编程中的作用等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。