конд с большими пунктами - PullRequest
       1

конд с большими пунктами

7 голосов
/ 02 февраля 2012

Каков рекомендуемый метод форматирования больших предложений внутри оператора cond в Clojure?

Пример:

(cond
 (> (large-function large-arg1
                    large-arg2
                    large-arg3)
    long-var-name))
 (->> (iterate #(* % 6) 1)
      (take 10)
      (apply +))
 (> (large-function large-arg4
                    large-arg5
                    large-arg6)
    long-var-name))
 (->> (iterate #(* % 6) 1)
      (take 10)
      (apply +))
 (> (large-function large-arg7
                    large-arg8
                    large-arg9)
    long-var-name))
 (->> (iterate #(* % 6) 1)
      (take 10)
      (apply +)))

Если результат находится в той же строке, что и условие, результат заканчиваетсяСлишком большой отступ, но если результат и условие - это разные строки, становится слишком легко потерять отслеживание условий и результатов.Это похоже на ситуацию, когда cond в стиле Common Lisp был бы полезен, но добавление скобок (возможно, скобок в случае Clojure) не похоже на рекомендуемый курс.

1 Ответ

7 голосов
/ 02 февраля 2012

Во многих случаях такие вопросы, как этот по умолчанию, «форматируют так, как это делает emacs».Не то чтобы я изначально поддерживал эту философию.Это в конечном итоге зависит от вашего эстетического восприятия

в коротких conds, которые мне нравятся:

(cond
  (clause1) (action)
  (clause2) (action)

для действительно длинных, таких как ваш.

(cond
   (clause)
   (action)

   (clause2)
   (action2)

поэтому я бы отформатировал ваш код:

(cond
 (> (large-function large-arg1
                    large-arg2
                    large-arg3)
    long-var-name)
 (->> (iterate #(* % 6) 1)
      (take 10)
      (apply +))

 (> (large-function large-arg4
                    large-arg5
                    large-arg6)
    long-var-name)
 (->> (iterate #(* % 6) 1)
      (take 10)
      (apply +))

 (> (large-function large-arg7
                    large-arg8
                    large-arg9)
    long-var-name)
 (->> (iterate #(* % 6) 1)
      (take 10)
      (apply +)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...