clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
andrewtropin 2017-09-05T13:34:58.000323Z

Кто использует graphql? Как вы живёте с тем, что там только camelCase? У меня получается база в snake_case, код в kebab-case и одно в другое неплохо конвертится автоматически. Но если добавить graphql, то как минимум схема на edn будет в camelCase, что совсем не прикольно. Кто знает как быть?

2017-09-05T20:52:13.000027Z

господа, а можно вот философский вопрос

2017-09-05T20:52:31.000349Z

а то я даже вот кложу подзабросил потому что я хз как вести на ней масштабируемую разработку (tm)

2017-09-05T20:52:38.000083Z

(это когда больше 5 файлов)

2017-09-05T20:53:48.000621Z

вопрос звучит так: почему мы юзаем keyword'ы с неймспейсами, которые нечувствительны к опечаткам, вместо того, чтобы объявить их в нужном неймспейсе как вары?

2017-09-05T20:54:42.000137Z

ну понятно, то есть раз кложа - мы гоняем туда-сюда словари, и делаем по ним мапы и ещё мапы. и потом сиди думай, устарели эти конкретные киворды, или ты уже всё отрефакторил и в коде реально это ещё как живёт

2017-09-05T20:55:25.000646Z

и сидишь пыришься в этот код без тестов, потому что тесты ещё не хватало писать на 6 файлов (да, вот добавляю к тем пяти шестой, ага)

2017-09-05T20:56:47.000456Z

то есть пропозал по идее какой? было

(ns hi.there)

(def mem-db
  {:something {:megaservice/adapter ..}})


(ns megaservice)
;; (defn .. разные функции, которые поедают и работаю с :megaservice/adapter)
стало
(ns hi.there)

(def mem-db
  {:something {megaservice-adapter ..}})

(ns megaservice)
(def adapter ::adapter)

2017-09-05T20:57:57.000099Z

имеем: сделал опечатку - А КОНПИЛЯТОР ВСЁ ВИДИТ(!)

2017-09-05T20:58:38.000392Z

как оно, такое? (дунул-придумал)

2017-09-05T21:02:36.000582Z

@kuzmin_m это императивненько

def move_link_to_packet_for_replaced_race(race)
    return if data.replaced_order_uid.blank?
    replaced_race = Race.find_by(uid: data.replaced_order_uid)
    return if replaced_race.blank?
    return if replaced_race.packet.blank?
    replaced_race.packet_attached_race.update! race: race
  end
менее императивно (а presence - рельсово):
def move_link_to_packet_for_replaced_race(race)
    data.replaced_order_uid.presence  # presence вставил только для того, чтобы сохранить дословно семантику оригинала
      .try! {|e| Race.find_by(uid: e)}
      .try!(:packet_attached_race) 
      .try! {|e| e.update! race: race }
  end