IK.AM

@making's tech note


Clojureオレオレコーディング規約

🗃 {Programming/Lisp/Clojure}
🗓 Updated at 2010-04-04T17:17:09Z  🗓 Created at 2010-04-04T17:17:09Z   🌎 English Page

しばらくClojureのコードを書いてみてしっくりきている書き方をオレオレ規約化してメモしていく(随時更新予定)。規約策定者募集!ネタがあれば@makingまで。

コーディング編

  • Javaインスタンス生成は(ClassName.)形式。(new書くのメンドイし.ついてりゃ明白)
  • Javaメソッドの呼び出しは(.method obj)形式。(.とメソッド名が離れていると可読性が悪い。..とか見たくない)
  • 無名関数は引数の数が1以下の場合は%(...)形式、2以上の場合は(fn [x y] ...)形式。(2以上の場合は変数名に意味を持たせましょう)
  • リフレクションを(極力)発生させないこと(特にライブラリ)。*warn-on-reflection*trueにしてテスト。メソッドを呼ぶオブジェクトを引数に取るときは型ヒントをつけること。
  • (当たり前だけど)defnの中でdefdefnしない。letletfnで。
  • 副作用があるときに明示的にdoしなくても良い
  • 閉じ括弧は右下にまとめる

プロジェクト編

  • ビルドはLeiningenを使う。生ant使うな
  • ディレクトリ構成はlein newでできるもの。
  • ライブラリ系のメインファイルは{namespace}/core.cljがメイン。
  • アプリ系のメインファイルは{namespace}.cljがメイン。(この辺はまだしっくりきてないけど、、core.cljのほうがいいかな)
  • リリースに不要なjarをproject.clj:dependanciesに入れない。開発時にのみ必要なものは:dev-dependanciesに入れない

✒️️ Edit  ⏰ History  🗑 Delete