按设计的稳定性

主要观点:动态类型语言编程易产生压力,如不确定库的使用方式是否有效及小版本升级是否会破坏代码,但 Clojure 语言虽动态却以稳定性著称,其库稳定的原因是避免破坏事物,如不重命名命名空间等,且任何语言的库都可采用这些原则。
关键信息:

  • OneHappyFellow 认为动态类型语言编程有压力,如不确定库使用和版本升级。
  • Clojure 语言在 Slack 中常被称赞稳定性,如搜索“stability”有 8 条帖子称赞,多个流行库的代码保留情况也显示稳定性。
  • Clojure 数据具有 immutable 等特性使其更能抵御变化,对象成员命名方式也不同。
  • 库变化导致程序破坏的原因包括安全修复、bug 补丁、增强等,其中增强中的重命名等会导致破坏,而避免要求更多输入和返回更少输出可避免破坏用户代码,新函数不会破坏用户代码。
  • Clojure 生态系统稳定是因为避免破坏事物,开发者应避免重命名等行为,且这些原则任何语言的库都可采用。
    重要细节:
  • 在 Clojure 中,序列化数据用 Extensible Data Notation (EDN) 格式,数据不可变,通过assocupdate返回新数据。
  • 对象成员命名在动态语言中常为简单符号,易导致歧义,而 Clojure 通常给字段添加命名空间元素。
  • 库变化的原因有安全修复、bug 补丁、增强等,增强中的重命名等会破坏程序,而避免要求更多输入和返回更少输出可避免破坏用户代码,新函数不会破坏用户代码。
  • Clojure 社区在函数参数等方面的实践变化,如从接受参数列表到接受单个 hashmap 以利于扩展。
  • 感谢 OneHappyFellow 等对文章的输入,Eugene Pakhomov 提供了 Clojure 库的栈图表。
阅读 12
0 条评论