BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

NHibernate 3.0 公開

| 作者: Jonathan Allen フォローする 657 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2010年12月15日. 推定読書時間: 2 分 |

原文(投稿日:2010/12/12)へのリンク

NHibernate 3.0 は人気 ORM (Object-Relational Mapping) の,一年ぶりとなるメジャーリリースである。今回のリリースでは,CLR のバージョンが .NET 3.5 に変更されている。これに伴って QueryOver API が実現され,これまでの文字列ベースの ICriteria 式が,強く型付けされた lambda 式に置き換えられる。これはビルトインされた LINQ プロバイダの付加機能である。

今回のバージョンには 互換性のない変更 がいくつかある。nullable 型のサポート改善はそのひとつだ。以前のバージョンでは,"<map> に nullable 型 ( DateTime? など) の <element> を使用する場合,null 値の追加や null 値への更新はできない"。null 値を単に無視していた前バージョンとは異なり,NHibernate 3.0 はデータベースを正しく更新する。また2つの関数のシグネチャが変更され,前バージョンで obsolete と指定されていたメソッドが削除されている。

関連するニュースとして,NDepend の Patrick Smacchia 氏が NHibernate のコード解析報告 を公開している。分析の結果に対する同氏の意見 が,NHibernate のブログに掲載されている。氏の要約によれば,

要約すると,NH は以下の問題については OK です。

  • アセンブリの数が多すぎる問題 (なんと,私の知るプロフェッショナルプロジェクトの 95% が数百ものアセンブリを抱えているのです。開発者のワークステーションとビルドマシンのすべてをとんでもなく遅くする以外,何の役にも立ちません !!)
  • コードカバレッジ不足。NH は 76% という,十分なコードカバレッジレシオを持っています。ただし手作業による記述と生成コードについてであって,テストコードはカウントしていません。参考までに,全体で 63K の LoC (Lines of Code,コード行数) 中,18K LoC が生成されたコードです。
  • API の非互換的変更。開発チームは NH の公開部分に十分な注意を払っていて,以前の NH 2.1.2 バージョンと NH V3.0.0 の比較に関しては明確に警告されています。
  • 不要コード

以下の点には改善の余地があると思います。

  • Code Contract の使用。NH では Code Contracts フレームワークがまったく (MS Code Contract API や Debug.Assert(..) なども) 使用されていません 。
  • 全体のコードカバレッジレシオが 76% もありながら,多くのメソッドあるいはタイプのカバレッジが 90%+ 止まりであり,100% に達していないこと。問題なのは,テストが困難でカバーされずに残った数パーセントのコードの中に,往々にして微妙なバグが残っていることなのです。
  • 全体的なコードアーキテクチャの改善 (NH の公開 API のリファクタが不可能なのが明白である以上,非現実的ですが)。
  • 基本的なコードメトリックスの品質しきい値の重視 (複雑すぎるメソッド,神的クラス,ファットコード,パラメータ数の多いメソッド ... など)。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT