Hatena::ブログ(Diary)

yvsu pron. yas このページをアンテナに追加 RSSフィード

2009-02-23

DRYについてのよくある誤解

WEB+DB PRESS vol.49で、「現場で役立つDRYの基礎知識」が特集されています。とても、良い記事だと思うので、ぜひみなさん、読んでください。

ただ、ちょっと補足をしておきます。


記事の中で、DRYは、「達人プログラマー」の中で、とりあげられ、Railsによって広まったとされています。確かに、Ruby世界ではそうかもしれないけど、DRY原則というのは、ERモデリング(DOA)の世界では、ずっと「One Fact In One Place」という言葉で知られてきました。

ERモデリングにおける正規化は、「One Fact In One Place」を具体的に実現するための手段です。

DRYという言葉そのものを広めたのは、間違いなくRailsです。しかし、DRYの考え方そのものは、昔からあったし、「One Fact In One Place」という言葉も、昔から有名だったということは知っておいたほうがいいでしょう。


後、今回の記事ではありませんが、DRYについてよくある誤解が、RailsActiveRecordモデルカラム情報記述しないから、DRYであり、Hibernateなどは、テーブルとエンティティ(モデル)に同じ情報があるから、DRYじゃないというものです。


DRYは、作業そのものを繰り返さないことであり、自動化によって生成されるものは、繰り返していることになりません。

一つのモデル定義から、DDLやエンティティを自動生成している場合は、DDLやエンティティに同じ情報が含まれているように見えますが、作業を繰り返しているわけではないので、DRY違反しているわけではないのです。

Railsdb:migrateもmigration用のスクリプトとテーブルの定義が重複しているように見えますが、テーブルの定義自動生成されているので、DRY原則違反していません。それと同じことです。


ついでに言っておくと、CoC(Convention over Configuration)も言葉自体は、Railsによって広まりましたが、考え方そのものは、Java世界だと「Configuration by Exception(デフォルトの設定を用意しておいて、例外のときのみ設定するようにする)」が、同じような意味だし、きっと他の言語でも同じような考え方があるでしょう。


これは、Rails画期的なわけではなくて、これまでの概念を焼き直ししただけだといっているわけではありませんよ。

DRYやCoCの方向に、Rubyだけではなく、さまざまな言語フレームワークを引っ張っていったRailsの功績は偉大です。広めるというのは、考え付くよりも難しいことが多いのです。

中込中込 2009/02/23 14:27 ERモデリングというか、DOA全般でね。

なまえなまえ 2009/02/24 02:26 このエントリとは何も関係がないのですが質問させていただいてもよろしいでしょうか?

私は,現在就職活動をしているものです.
仕事は,プログラミングなど(最終的には一連の作業をやりたい)をやりたいと思っているのですが
プログラミングをやるには大手では難しいのでしょうか?

ここ最近,大手を中心に何ヶ所か就職のセミナーに行きました.
ある会社では開発を行っているらしいのですが
よくよく質問するとプログラミングは行わないらしいです.
また,あるメーカーで聞いたところでは「希望を出せば1年目だけ子会社でやることもできる」とのことでした
自分はコーディングなど下流のこともやりたいと考えているのですが
上から下まで一連の作業を経験できる企業と言うのはあまりないのでしょうか?
ブログを読ませていただきましたが
読めば読むほどそれが難しいのかなという気になってしまうのですが

名無し名無し 2009/02/24 13:57 ひがさんが前にブログで書いていた
プログラミングファーストという言葉も
昔からあるプロトタイプ開発と同じような意味ですよね
と、ふと思い出したのでコメントしてみましたw

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証