スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

トリッキーなコードと芸術的SQL

少々、SQLを理解できないプログラマをこき下ろしすぎたので、ちょっと訂正。

SQLが嫌われる理由の一つには、時々難解で非常に長いSQLを書く人がいるというのがある。芸術的SQLとも言われるもので、書いた本人でないと理解が難しい。

とはいえ、これはSQLに限らず、あらゆる言語でトリッキーな書き方があり、C言語なんかは難解なコードを書くコンテストがあるくらいで、そういうトリッキーなコードを書ける人こそ、真の○○使いとも呼ばれる。

しかし、自己満足に浸るのではなく、他人がメンテナンスすることを考えて、わかりやすいコードを書く必要もある。
一般にわかりにくくなるのは以下の場合があるだろう。

1.トリッキーな記述
 今述べたもの。

2.言語本来の記述
 あらゆるプログラミング言語は、代入、計算、制御、手続きなどの要素からなっているとはいえ、それぞれの言語には流儀がある。
 またそのスタイルにおいても、べた書きのソースコードは上から眺めていけばよく、それに慣れている人は、機能が分割され、実装内容を追うためにモジュールを追っていかなければならない構造化プログラミングは読みにくく、またカプセル化・ポリモーフィズムのあるオブジェクト指向プログラミングはさらに読みにくい。メソッドの内容を見たいと思っても抽象メソッドばかりで、ソースを追っていくのが大変に見える。
 関数型言語も慣れている人にはわかりやすいようだが、他の言語に慣れていると解読は容易ではない。特に書くのは楽だが読むのは書いた本人でないとつらいようだ。
 SQLも言語の一種であり、多様なプログラミング言語があることを考えると、SQLだけを仲間外れにする必要はないと思う。

3.他人のソースは読みにくい
 概して他人の書いたソースは読みにくいものだ。

読みやすいソースは、整形され、変数やメソッドの命名がしっかりしており、何の処理をしているか明確なブロックから構成されているものだ。
しかし、ロジックがわかりやすいかどうかの判断基準はどこにあるのか。

わたしは、
開発をもっと楽にするNAgileの基本思想
のシリーズを興味深く見ているのだが、ソースコードが設計を語るというのは理想的だ。
人間の思考のままにソースを書く。これはいい方向性だ。オブジェクト指向は思想としてはその方向を目指していた。関数型言語も人間の思考にマッチしている。しかし人間の思考は同じか。
深い論理的思考ができる人と、すべて直感的というか感情的に処理する人の思考は異なる。

話をSQLに戻すと、どこまでがわかりにくいSQLか。
そもそも高級言語が登場したのは、わかりやすさや保守性を追求し、処理性能を気にしなくてよくなったからである。
SQLを一回で書く必要があるのは、アクセスのオーバーヘッドを少なくし、プログラム側のロジック、メモリの節約をするためである。

さすがに芸術的SQLはやりすぎだが、とはいえ、どこまでがOKなのかという線引きは難しい。人によってはちょっと条件句や外部結合や副問い合わせを使っただけで駄目になる。わかりやすさのレベルというのは異なる。

わかりやすくする方法としては、SQLを分割し複数発行する、プログラム側でロジックを組む、ストアドを使うとなる。しかし一発でできる場合一回でやりたいのがSQL屋だ。

ところが、ORマッピングが結局可能にしているのは、簡単なSQLをなくすこと。複雑なSQLは直接書け、となる。これは先ほどの問題点の解決志向ではない。コード量の軽減に寄与してもわかりやすさには寄与しない。
もちろん、それはそれで利点であることには変わりないが、本来の目的はそうだったのだろうか。

関連記事
スポンサーサイト

trackback


この記事にトラックバックする(FC2ブログユーザー)

C言語

<BR> トラックバックさせてもらいました。 C言語はハードウェアレベルでの操作ができます。勉強される際に参考にしてください。...<A HREF=http://styling-garden.com/content/c/index.html TARGET=_NEW rel="nofollow">more</A>

コメント

非公開コメント

プロフィール

dayan

Author:dayan
小職は、SE(システムエンジニア)を専門としておりますが、技術的な情報を中心に、それ以外に経済関連の日記、たわいもない日記も載せていきます。
[公式HPもよろしく!]

天気予報

-天気予報コム- -FC2-
リンク
ブロとも申請フォーム

この人とブロともになる

カテゴリー
最近の記事
ブログ内検索
最近のコメント
最近のトラックバック
RSSフィード
月別アーカイブ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。