Комментарии 14
когда я вижу статью про Clojure, то каждый раз я наблюдаю много философии, объяснений почему Clojure это круто, но при этом очень мало примеров реального кода :)
кто-то понял что конкретно на картинках нарисовано?
Каждый видит в статье то, что может увидеть - в меру своей "испорченности". Я, например, увидел пересечение с моими публикациями "Отвлеченно о входных/выходных аргументах" и "Так в чём же конечная цель программирования?".
Если что, то и на чистом JS можно написать функцию, устойчивую к изменению сигнатуры метода - с использованием декомпозиции входных-выходных аргументов:
function fn({a = 1, b = 'text', c = true}) {
const res = {};
// do some work
return res;
}
В принципе, годная статья, если абстрагироваться непосредственно от Clojure, а держать в фокусе идею "неразрушающего рефакторинга". Позеленил.
Аналогично. Вижу практики, которых сам придерживаюсь - "не ломай обратную совместимость при рефакторинге, не надо будет фиксить баги"
абстрагироваться непосредственно от Clojure, а держать в фокусе идею "неразрушающего рефакторинга"
Ну вот автор говорит очень правильную вещь: идея «неразрушающего рефакторинга» — лежит на плечах сообщества. «Тут так принято», — говорит автор очередного лефтпада, и выпускает версию 5.0
, которая несовместима ни с одним предыдущим мажором. Знакомо? — А мне нет. В сообществе эликсира, например, не бывает библиотек с мажорным номером версии, превышающим 2
(за наиредчайшим исключением).
1.0
фиксирует API, 2.0
— означает буквально «мы больше не добавляем функциональность, только фиксим баги». Я поддерживаю более десяти библиотек, так или иначе используемых сообществом, и они все до единой обратно совместимы с версией 0.0.1
. Потому что так принято (ну и потому что мне лично такая идеология близка, конечно).
Ну, у меня в приоритетах веб-приложения, включая SPA/PWA. Поэтому только JS, только хардкор!!1 :)
А по поводу обратной совместимости у меня несколько другое мнение (см. последний пункт в "С лупой на слона"). Так тоже иногда бывает принято, в других сообществах. Например, на программном уровне Magento 2 и Magento 1 - две разные Вселенные, а с точки зрения бизнес-функций - эволюция одной ¯\_(ツ)_/¯
Сорри за оффтоп, но графики напомнили мне детские рисунки моей дочери. Типа "цветение сакуры". Так то конечно по ним сложно сходу врубиться в их смысл.
Годнота. Приятно читать, осознавая, что роящиеся в голове частично реализованные идеи немало перекликаются с уже реализованными в неизвестной кодовой базе на другом конце мира)
Clojure — стабильность по определению