DBFlute-1.1ではSQLにコメントを

DBFlute-1.1だとこうなるシリーズ、
ごめんなさい、まだあるんです。

わりと些細なことですが、ちょっと思い切りました。
外だしSQLのコメントのことです。

そもそも外だしSQLのコメントって?

こんなやつです。
/*
 [df:title]
 なんとか会員のいいかんじ検索
 
 [df:description]
 ページングしたりするし、
 感慨深い結合とかやっている
*/
select ...
  from ...
 where ...
 order by ...
という感じで、SQLのタイトルと説明を書くコメントです。
[df:title] と [df:description] と入れることで、
JavaDocコメントや SchemaHTML に反映されます。

例えば、こんなかんじです。
 -> SchemaHTML - OutsideSql List

1.0.xではもちろんゆるい

1.0.xでは、デフォルトでは何もチェックされません。
外だしSQLのコメントをチェックするオプションがあります。

outsideSqlDefinitionMap.dfpropにて、

; isRequiredSqlTitle = true
; isRequiredSqlDescription = true

とすると、OutsideSqlTestタスクにて、
(outside-sql-test.batを叩くと)
もし、コメントがないSQLがあったらタスクが落ちます。

別に、Sql2Entityではチェックがかからないので、
ちょっと弱いチェックではあります。

SQLこそコメントを

もう、詳しく説明するまでもないですね。
ですが、やっぱり現場のSQL、
無言でわけわからないものが多いものなのです。

Javaのプログラムは、
まだ Eclipse など支援でソースを追っかけやすかったり、
そもそもコメントを書く習慣が付いてる人が多かったりと、
まだ良い方だとは思います。

SQLは、とっても自由な言語であるため、
「絶妙なロジック」
なることが多いため、
何も書いてないと何をやっているのかをわからない。
最初に書いた人じゃない人が修正しようにも、
手の出しようがないという状況が起きやすいのです。

あまり変更をしないシステムであればまだいいのですが、
特に DBFlute は変化の激しい現場を想定したツールです。
DBFluteの外だしSQLでは、ぜひともコメントを
「ちょっとでも」
いいので書いて欲しいという気持ちがあります。

それが、

そのSQLで一言で言うと何?

と、

そのSQLをメンテする人に残しておきたい言葉は?

です。

それを、
[df:title] と [df:description] で残しておいて欲しいなと。
JavaDoc や SchemaHTML にも表示されるとあれば、
コメントを書くモチベーションもちょっとは上がるかなって。

ということでSql2Entityでも

ということで、
チェックをデフォルト設定で必須にしようかなと。

DBFluteであれば、そもそも外だしSQLは極端に少なくなります。
それでも外にだされたSQLは、
「コメントが必要なほどの複雑で役割重要なSQL」のはずです。

で、それならば、本当は Sql2Entity でもチェックすべきでしょ、
ということで、Sql2Entity でもチェックするようにしました。
これは強力です。コメント書かないと先に進まないということなので。

迷ったのは、
「エラーでよくわからないので、いいや自分でクラス作っちゃえ」
ってなるとやだなぁと思ったのですが、ここは、

SQLのため

にも...ね。
その分、例外メッセージはしっかりしたものにします。

もちろん、外せます

コメントを書くメドが立たないなら、

outsideSqlDefinitionMap.dfprop にて、

; isRequiredSqlTitle = false
; isRequiredSqlDescription = false

とすると、何もしません。

また、

; isCheckRequiredSqlCommentAlsoSql2Entity = false

とすると、Sql2Entityではチェックしなくなります。
OutsideSqlTest だけでチェックしたい場合はこちら。

外だしSQLの支援をもっと

Eclipseプラグインである「EMecha」で、
外だしSQLの作成支援ができます。(これはもとから)
 -> EMecha - EMSql | DBFlute

これを使えば、
コメントの形式に迷うことなく書くことができます。

ただ、みんながみんなEclipseを使うわけでもないので、
違った支援はしていかないとだなぁとは思っています。