【问题标题】:How can I refactor Clojure source code?如何重构 Clojure 源代码?
【发布时间】:2012-09-15 17:42:40
【问题描述】:

进行4clojure 练习,一个目标是提供正确答案,一个可选目标是提供尽可能短的解决方案(空格不计算在内),也就是代码高尔夫。然后,您可以与其他解决方案进行比较。

在做练习时,我首先找到正确答案。然后我将 ma​​nual refactoring 应用到我的源代码中,其中包括将变量名称重命名为单个字符。例如,应用此基本步骤后,我的代码可能如下所示。

(fn f[s]
   (if (empty? s)
     {}
     (let [[k & r] s
        [v n] (split-with number? r)]
        (assoc (f n) k v))))

对于人类来说非常难以阅读,但在 4Clojure 代码高尔夫比赛中得分更高,因为它节省了很多字符。

出于好奇,您将如何在 emacs 中实现自动化? clojure.core 中是否有重构功能可以提供帮助?我没有找到。

【问题讨论】:

    标签: emacs clojure refactoring elisp


    【解决方案1】:

    了解图书馆。例如,您可以使用if-letseq。如果你不考虑使用静态分析工具“作弊”,请查看Kibit

    【讨论】:

    • 是的,对于 if-let 或 seq,我知道他们。实际上这里提取的代码仅用于说明目的。感谢您提供 Kibit 的链接。实际上,我正在研究它的源代码,并发现了我不知道的新功能:walk 和 prewalk。从文档中,它真的闻起来就像我正在寻找的东西。谢谢:-)
    【解决方案2】:

    clojure-refactoring 显然可以提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 2016-09-03
      相关资源
      最近更新 更多