しばらくClojureのコードを書いてみてしっくりきている書き方をオレオレ規約化してメモしていく(随時更新予定)。規約策定者募集!ネタがあれば@makingまで。
コーディング編
- Javaインスタンス生成は
(ClassName.)
形式。(new
書くのメンドイし.
ついてりゃ明白) - Javaメソッドの呼び出しは
(.method obj)
形式。(.
とメソッド名が離れていると可読性が悪い。..
とか見たくない) - 無名関数は引数の数が1以下の場合は
%(...)
形式、2以上の場合は(fn [x y] ...)
形式。(2以上の場合は変数名に意味を持たせましょう) - リフレクションを(極力)発生させないこと(特にライブラリ)。
*warn-on-reflection*
をtrue
にしてテスト。メソッドを呼ぶオブジェクトを引数に取るときは型ヒントをつけること。 - (当たり前だけど)
defn
の中でdef
、defn
しない。let
、letfn
で。 - 副作用があるときに明示的に
do
しなくても良い - 閉じ括弧は右下にまとめる
プロジェクト編
- ビルドはLeiningenを使う。生ant使うな
- ディレクトリ構成は
lein new
でできるもの。 - ライブラリ系のメインファイルは
{namespace}/core.clj
がメイン。 - アプリ系のメインファイルは
{namespace}.clj
がメイン。(この辺はまだしっくりきてないけど、、core.clj
のほうがいいかな) - リリースに不要なjarを
project.clj
の:dependancies
に入れない。開発時にのみ必要なものは:dev-dependancies
に入れない