Size: a a a

Clojure — русскоговорящее сообщество

2021 February 24

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну вот мне сейчас проще (точнее, понятнее) делать по умолчанию приватно, в закрытом проекте.
так я лучше понимаю зависимости между неймспейсами, также это помогает видеть кривизну в зависимостях, которую требуется исправить
впрочем, делать я это начал благодаря линтеру
а потом и мне самому понравилось
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
но в целом не вижу причины привыкнуть писать defn- на автомате
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
для repl driven закрытость ни к чему, так что меня имеющиеся в clojure умолчания вполне устраивают
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Мне как-то проще и приятнее, когда приватность это «джентельменское соглашение», чтоб в любой момент можно было полезть под капот либы и перехачить ее как хочешь.
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Особенно это заметно на либах метосина, когда закопался в их код, и вроде понял как бы так извернуть их реализацию под себя, а потом натыкаешься на какой-то приватный билдер
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mike Bohdan
Мне как-то проще и приятнее, когда приватность это «джентельменское соглашение», чтоб в любой момент можно было полезть под капот либы и перехачить ее как хочешь.
ну если не пугает, что при обновлении либы всё сломается, то ради бога 😊
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Damir Farazetdinov
def - для всего глобального.
let - для всего локального.

или по-другому: всегда используй let, а если оказывается потом, что нужен доступ "снаружи", то перекидывай в def (конечно же с соблюдением определённых правил).
Ну это, опять же, во всех языках ведь так.
из такого описания можно вытащить вот такое: (let [x 1] (def y x)) в нэймспейсе
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Mike Bohdan
Особенно это заметно на либах метосина, когда закопался в их код, и вроде понял как бы так извернуть их реализацию под себя, а потом натыкаешься на какой-то приватный билдер
В такие моменты прям полыхает
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну если не пугает, что при обновлении либы всё сломается, то ради бога 😊
Работает – не трожь)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mike Bohdan
Работает – не трожь)
ну да, там всякие уязвимости и крики «обновись» 😊
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Kirill Chernyshov
из такого описания можно вытащить вот такое: (let [x 1] (def y x)) в нэймспейсе
брррр
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
ну вот! снова разгорелось...
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Mike Bohdan
Особенно это заметно на либах метосина, когда закопался в их код, и вроде понял как бы так извернуть их реализацию под себя, а потом натыкаешься на какой-то приватный билдер
а кто мешает через var?
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
а кто мешает через var?
Никто, но меня просто всего выворачивает от таких хаков)
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Mike Bohdan
Никто, но меня просто всего выворачивает от таких хаков)
да я бы не сказал, что это хак. Опять же, лезть в чужие приваты нужно гораздо реже, чем не лезть.
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
До сих пор коробит от этих замечательных строк в clj-http

https://github.com/dakrone/clj-http/blob/dd15359451645f677b3e294164cf70330b92241d/src/clj_http/client.clj#L123
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
я это к тому что не стоит описывать разницу между let и def через "как и кому это будет доступно"
это две соверщенно разные конструкции для абсолютно разных вещей
let - для формирования локального лексического скоупа
def - для формирования интерфейса нэймспейса
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Kirill Chernyshov
я это к тому что не стоит описывать разницу между let и def через "как и кому это будет доступно"
это две соверщенно разные конструкции для абсолютно разных вещей
let - для формирования локального лексического скоупа
def - для формирования интерфейса нэймспейса
ну да, всё так
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
хм, а зачем они так сделали?
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
да я бы не сказал, что это хак. Опять же, лезть в чужие приваты нужно гораздо реже, чем не лезть.
Но на много проще когда их не и просто переиспользуешь весь код как хочешь
источник