Clojure:
Рефакторинг
Как:
Рефакторинг в Clojure — благодаря его чистому синтаксису и функциональной парадигме — может быть невероятно простым. Давайте рассмотрим обычный сценарий: итерация по коллекциям. Вы можете начать с цикла for
, вот так:
(defn calculate-sum [numbers]
(reduce + 0 numbers))
(defn old-way []
(let [nums (range 1 11)]
(calculate-sum nums)))
Вызов (old-way)
даст нам 55, сумму от 1 до 10. Но, эй, мы можем рефакторить это, чтобы сделать более Clojure-образным:
(defn new-way []
(->> (range 1 11)
(reduce +)))
Эта рефакторинговая функция (new-way)
использует макросы потоков для передачи диапазона непосредственно в reduce
, уменьшая избыточность.
Погружение
Искусство рефакторинга имеет корни в ранние дни разработки программного обеспечения, но действительно набрало обороты с выходом фундаментальной книги Мартина Фаулера “Рефакторинг: Улучшение проекта существующего кода”, опубликованной в 1999 году. В Clojure рефакторинг часто опирается на принципы функционального программирования, отдавая предпочтение чистым функциям и неизменяемым структурам данных.
Альтернативы ручному рефакторингу в Clojure могут включать использование инструментов вроде Cursive, популярного плагина для IntelliJ IDEA, который предлагает автоматизированные рефакторинги, специфичные для Clojure. Также существует clj-refactor, пакет для Emacs для Clojure, предоставляющий набор функций для рефакторинга.
Особенной задачей при рефакторинге в Clojure является работа со состоянием и побочными эффектами в принципиально неизменяемой и свободной от побочных эффектов парадигме. Осторожное использование атомов, справок, агентов и транзиентов является ключевым в поддержании как производительности, так и корректности при рефакторингах.
Смотрите также
- “Рефакторинг: Улучшение проекта существующего кода” Мартина Фаулера для основных концепций.
- Документация Clojure для конкретных примеров идиоматичного кода Clojure.
- clj-refactor для автоматизации рефакторинга в Emacs.
- Cursive для пользователей IntelliJ, ищущих помощь в автоматизированном рефакторинге.
- Рефакторинг с Ричем Хикки - Доклад создателя Clojure, который, хотя и не о рефакторинге в частности, предоставляет представление о философии Clojure, которая может направлять эффективные решения по рефакторингу.