Kugelblitz

いつ何時誰の挑戦でも受ける!

SQLコーディング規約

俺のSQLの書き方は、予約語が小文字なんですね。一般的でないことは十分承知していますが。

予約語以外の、テーブル名やカラム名は、使うデータベースの内部表現に合わせています。ORACLEなら大文字、PostgreSQLなら小文字ですね。パフォーマンスには大きな影響はないようですが、合わせてないとなんとなく気持ちが悪いです。

具体的には、以下のようになります。

select
    t1.col_1
    , t1.col_2
    , t2.col_3
from 
    table_1 t1
    join table_2 t2 on t1.col_a = t2.col_b
where 
    t1.col_b = 'foo'
    and t2.col_c = 'bar';

カンマは行頭派、改行は一部の予約語(select, form, where, group by, having, order by)、の後ですね。

エイリアス名も、なんのこだわりもなくt1,t2のようにつけています。なんのエイリアスかわかりにくくなるのかもしれませんが、妙な省略形でわかりにくくなるくらいなら、テーブル名そのままか、t1,t2でいいと思っています。

予約語が小文字だと、予約語かそうでないかわかりにくくなる、って言いますが、本当にそうですかね。俺はそんなに困らないけど。

例えば、Javaで、

public int foo(int val){
    // .....
    return val;
}

ってなりますが、どれが予約語なのか混乱はしませんが。

もし、予約語とそれ以外の識別をわかりやすくするなら、

PUBLIC VOID foo(INT val){
    // .....
    RETURN val;
}

って言う風な予約語を大文字にした新言語がでてきたり、

public int FOO(int VAL){
    // .....
    return VAL;
}

みたいな、予約語以外を大文字にするコーディング規約ができてもいいようなものです。

まあぶっちゃけ、ある程度の一貫性だけ守ってもらえれば、好きな様に書けばいいです。

コーディング規約の類って、割りとどうでもいいことだって思います。以前はコーディング規約をきっちり定めて、チェックツールで守らせれば品質とか保守性が上がると思っていましが、関係ないです。規約やルールに従うことばかりに囚われて、自分の頭で考えないプログラマの作ったソースコードはダメです。

もっと常識を疑うことが必要です。

Pocket

他の記事