📝Clojure リファクタリング

📝Clojure リファクタリング

Clojureのリファクタリングまとめ.

リファクタリングにはエディタサポートが必須である.

現状 Emacs のみ利用しているのでノウハウはとりあえずEmacsに閉じているかも.

clj-refactor.el #

CIDERの拡張で多様なリファクタリング機能を提供.

clojure-emacs/clj-refactor.el

よく使うものを抜粋する.

  • cljr-thread-first-all: -> に表記を変換.
  • cljr-thread-last-all: -» に表記を変換.
  • cljr-unwind-all: スレッディングマクロ表記をネストした()に分解.

とくにこれらはprint-debugで便利. スレッディングマクロはきれいに書けるけど途中経過をみたいときは一旦unwindして部分的にいじってまたもとに戻す.

ref: Clojure: Threading Macros

  • cljr-clean-ns: 不要なnamespaceのモジュールを取り除く.
  • cljr-destructure-keys
  • cljr-rename-file: namespaceを配慮してfileをリネーム.

逆引きHOWTO #

ref. clj-refactorでできるリファクタリング一覧

シンボルを名前変更をするには? #

cljr-rename-symbol をつかう.

レコードを名前変更するには? #

recordに対してcljr-rename-symbolをつかうとエラーする. 内部でJava Classを生成しているのでそれに対応できないのかな?

Emacsの機能で名前変更で使えそうなものを利用.

grep拡張のag/ripgrepで絞り込んで修正とか.

projectile-replace をつかうとプロジェクト(大抵はgitの管理範囲)での文字列の出現を置換できる.

References #