Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
Last active August 29, 2015 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xuwei-k/292091f55196129b0a2d to your computer and use it in GitHub Desktop.
Save xuwei-k/292091f55196129b0a2d to your computer and use it in GitHub Desktop.

scalikejdbcのmapper-generatorの現状の微妙な点まとめ

あくまでも「新たにasync版のほうをつくるなら、できれば改善して欲しい」程度で、今すぐ現状のやつの互換性を壊してまで変えたいほどじゃない

  • コード生成部分とsbt plugin部分を分けたのはいいが、そのせいで似たようなsettingのオブジェクトが2つ出来てしまい、設定増やすとき微妙に面倒なので、改善できるなら改善したい(コード生成部分とsbt plugin部分を分けること自体は悪くないと思う)
  • project/scalikejdbc.properties から読み込むのと project/Build.scala で設定する(そちらでしか設定できない)ものが混ざってて微妙なので、なんかしら整理したい
  • 互換性壊さずに抽象化というかカスタマイズ可能にするために、こういうこと https://github.com/scalikejdbc/scalikejdbc/pull/370/files をしたが、そもそも互換性壊していいなら、同じ方法でtraitを切り出すにしても、もう少し違うメソッドになると思う
  • とにかく CodeGenerator.scala のファイルが大きすぎるので、もっと分割
  • CodeGenerator.scala にファイル書き込みのメソッドあるの微妙なので、 CodeGenerator.scala は基本的に String を生成して返す役割だけをさせたい(ファイルに書き込むのは別のクラスで)
  • その他色々もっと細かく拡張やカスタマイズ可能にしたい
  • scripted test時間がかかりすぎるので、もっと簡単に単体テストできるなにか
  • object SbtKeys が分かれているのはいいような悪いような微妙なところ(Pluginを継承したやつの中に書けば、build.sbtの中ではデフォルトでimportされるが、この場合されないので)
  • sbtのKeyの種類も、現状そんなに大きな問題はないが、新たにつくるなら、今と全く同じではなくもう少し整理のやりようはあるかもしれない?
  • そもそも、そろそろAutoPlugin(sbt0.13.5以降の機能)でいいかも?
  • scalikejdbc.mapper.SbtPlugin 内部で例外投げてるところ、composableじゃないというかたまに不便なときがあったので、最終的に例外投げるにしても、途中はEither使うなどしてもいいかなぁーと個人的に思った
  • バイナリ互換を維持する(少なくともmimaでチェックする)なら、最初からもっと維持しやすいように工夫しておくべき
  • 可能なら、コード生成された後のコードを、自動でいい感じにフォーマットできる仕組みを入れる?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment