명명 규칙
- 함수를 소문자로 유지
사용 -
(다른 언어 밑줄이나 낙타의 경우 일 것입니다 무슨) 하이픈.
(defn add-one
[i]
(inc i))
술어 (즉, true 또는 false를 리턴하는 함수)는 ?
예제로 끝납니다 .odd?
even?
nil?
empty?
상태 변경 절차는로 끝납니다 !
. 당신은 기억 set!
나요? 또는swap!
도달 범위에 따라 짧은 가변 이름 길이를 선택하십시오. 즉, 보조 변수가 매우 작은 경우 종종 한 글자로 된 이름 만 사용할 수 있습니다. (map (fn [[k v]] (inc v)) {:test 4 :blub 5})
필요에 따라 더 긴 변수 이름을 선택하십시오. 특히 많은 코드 행에 사용되며 목적을 즉시 추측 할 수없는 경우 더욱 그렇습니다. (나의 의견).
저는 많은 클로저 프로그래머들이 일반적인 이름과 짧은 이름을 사용하는 경향이 있다고 생각합니다. 그러나 이것은 물론 객관적인 관찰이 아닙니다. 요점은 많은 클로저 함수가 실제로 매우 일반적이라는 것입니다.
람다 함수
공백
(정의 단점
[ab]
(목록 ab))
doc 문자열에 대해 생각하면 의미가 있습니다. 함수 이름과 매개 변수 사이에 있습니다. 다음 doc 문자열은 아마 가장 현명하지 않습니다.)
(정의 단점
"물건 꾸미기"
[ab]
(목록 ab))
- 페어링을 유지하는 한 페어링 된 데이터를 새 줄로 분리 할 수 있습니다.
(정의 f
[{x : x
y : y
z : z
[abc] : coll}]
(인쇄 x ""y ""z ""a ""b ""c))
(원하는 ,
대로 입력 할 수도 있지만이 방법은 독특합니다.)
들여 쓰기를 위해 충분히 좋은 편집기를 사용하십시오. 몇 년 전에 이것은 lisp 편집을위한 이맥스였으며, vim도 오늘 훌륭합니다. 일반적인 clojure IDE도이 기능을 제공해야합니다. 임의의 텍스트 편집기를 사용하지 마십시오.
명령 모드의 vim에서는 명령을 사용하여 =
제대로 들여 쓸 수 있습니다 .
명령이 너무 길어지면 (중첩 등) 첫 번째 인수 뒤에 줄 바꿈을 삽입 할 수 있습니다. 이제 다음 코드는 의미가 없지만 식을 그룹화하고 들여 쓰는 방법을 보여줍니다.
(+ (if-let [나이 (: 개인 연령 콜)]
(만 18 세 이상인 경우)
나이
0))
(개수 (범위 (-3b))
(감소 +
(범위 b 10)))))
들여 쓰기가 잘되어 있으면 대괄호를 세지 않아도됩니다. 괄호는 컴퓨터 용입니다 (소스 코드를 해석하고 들여 쓰기). 들여 쓰기는 쉽게 이해하기위한 것입니다.
고차 함수 대 for
와 doseq
형태
Scheme 배경에서 왔을 때 나는 이해 map
하고 람다 함수 등을 알게 된 것을 자랑스럽게 생각했습니다 .
(map (fn [[k x]] (+ x (k data))) {:a 10 :b 20 :c 30})
이것은 읽기가 매우 어렵습니다. for
형태는 방법 좋네요 :
(for [[k x] {:a 10 :b 20 :c30}]
(+ x (k data)))
`map은 많은 용도를 가지고 있으며 명명 된 함수를 사용한다면 정말 좋습니다. 즉
(map inc [12 30 10]
(map count [[10 20 23] [1 2 3 4 5] (range 5)])
스레딩 매크로 사용
스레딩 매크로 사용 ->
및 ->>
뿐만 아니라 doto
경우에 적용한다.
요점은 스레딩 매크로가 소스 코드를 함수 구성보다 선형으로 보이게한다는 것입니다. 다음 코드는 스레딩 매크로없이 읽을 수 없습니다.
(f (g (h 3) 10) [10 3 2 3])
~와 비교하다
(->
(h 3)
(g 10)
(f [10 3 2 3]))
스레딩 매크로를 사용하면 일반적으로 한 번만 사용되는 임시 변수를 피할 수 있습니다.
다른 것들
- 문서화 문자열 사용
- 기능을 짧게 유지
- 다른 클로저 코드 읽기