私の周りではみんな独自色…もちろん私もその一人ですが。
それなりにルールがあれば良いのですが、全然お構いなしですごく見づらいケースもありますよね。
現在のマイルール
1.SELECTは単独記述。
・Oracle時代はヒント書く場所にしていたので、そのなごりかな。
・SELECTに続けて列を記述していた時期もある。
2.列を列挙する場合は1行1列。カンマは前に置く。
・コメントアウト時、列追加時に、該当行のみ変更で済むので。
・当然、先頭に列を追加する場合は複数行変更することになるが…経験上それは少数派。
3.予約後を大文字で記述する。
・これは最近。Oracle時代は全部大文字で書いていた。
4.真ん中に合わせる。
・SELECT、FROM、WHEREなどを右側で揃える。下記のサンプル参照。
SELECT tb1.column1 FROM table1 tb1 WHERE tb1.column3 = 123 GROUP BY tb1.column1
5.テーブルは必ず別名。
・なにかの記事で、そうすることで僅かだがパフォーマンスが上がると見かけたので始めた。(多分パースが早くなるのかな)
・最近は単一テーブルのSELECTでも記述する。後になってJOINするケースはしばしばあるが、そのときに別名をつけると変更箇所が増える。
6.JOIN ~ ON の条件は左側にJOINするテーブルの列を記述。
・右側に記述すると固定値や別テーブル列を条件とする場合、美しくない。
・そもそも左側に比較対象を記述するっていうのがおかしいと思っている。
・最近はコードでも if ( 1 == destvalue ) …って書くのがいるけど許せない。間違って代入してバグの元になる?しませんって。
FROM table1 tb1 LEFT JOIN table2 tb2 ON tb2.column1 = tb1.column1 AND tb2.column2 = 1 /* OK! */ LEFT JOIN table3 tb3 ON tb1.column1 = tb3.column1 AND 1 = tb3.column2 /* 美しくない! */ LEFT JOIN table4 tb4 ON tb1.column1 = tb4.column1 AND tb4.column2 = 2 /* 美しくない! */