私はJavaプログラミングでC#でも書いています。私はVSテストで生成されたアクセサークラスを見てきました。テストからプライベートメンバーや関数にアクセスするためです。アクセサーを意図的に作成する必要がある理由とその理由JavaからC#に移行する際にアクセサークラスについて知っておくべきこと
答えて
MSTestを中に生成されたアクセサは、クラスのプライベートな部分をテストすることがあります。そこで既に私は内部的に明示的にテストしなければならないと私は自問しています。
私は単体テストはクラスの公開面のみを実行する必要があると信じています。したがって、生成されたアクセサの要素は廃止されます。私の経験では、物事が変わったとき(特に彼らがリファクタリングをするときにそうするように)、特に維持することが些細でないことが分かっているので、それは良いことです。
アクセサーを使用する場合は、APIを変更せずに基本実装を変更することができます。
パブリックフィールドを公開すると、そのデータの格納方法が公開されます。代わりにパブリックプロパティを使用すると、データが内部的に格納される方法を変更し、パブリックインターフェイスを破ることなく、より柔軟に変更できます。 C#3.0以降で
追加ロジック がプロパティアクセサに必要とされない場合、自動実装 プロパティは、プロパティ宣言 がより簡潔します。あなたは、次の例に示す としてプロパティを宣言すると 彼らはまた、 オブジェクトを作成するために、クライアントコードを有効にする、 コンパイラは、プライベート、匿名 バッキングフィールドを作成し、専用のプロパティのget経由 にアクセスして アクセサを設定することができます。
例:
// Auto-Impl Properties for trivial get and set
public string Name { get; set; }
public int CustomerID { get; set; }
Roy Osherove's The Art of Unit Testingには、彼はあなたのクラスの消費者にとって本当に重要なことを言及しています。単体テストはコンシューマであり、APIを使用します。あなたの可視性を変更する必要がある場合は、次にテストする必要があります。アクセサを使用しないでください。
実際に私はこの本を読むことをお勧めします:-)
- 1. ポリモーフィズムについて知っておくべきC++のこと
- 2. IISについて知っておくべきこと
- 3. APIについて知っておくべきことは何ですか?
- 4. すべてのC++開発者がリンクについて知っておくべきこと
- 5. ユーザーの反社会的行動について知っておくべきことは何ですか?
- 6. 他人について誰が知っておくべきですか?
- 7. Rubyの前に知っておくべきことは何ですか?
- 8. 64ビットアプリケーションの開発について知っておくべきことはありますか?
- 9. クエリ実行プランについて知っておく必要
- 10. Java開発スタックのどのコンポーネントについて知っておくべきですか?
- 11. apache solrを起動する前に知っておくべきことはありますか?
- 12. エントリレベルのRailsジョブを取得する前に知っておくべきことはありますか?
- 13. MS RPCのSRVとは何ですか、それについて何を知っておくべきですか?インターフェイス登録フラグについて
- 14. 異なるソースファイルのコメントを特定するためにPythonについて知っておくべきことはありますか?
- 15. LAMPからSAMPへ移行する際の準備と準備について
- 16. 高品質のDjangoアプリケーションを作成するためにデータベースについて知っておくべきことは何ですか?
- 17. 春3から春2に行くことを覚えておくべきことは?
- 18. いくつかのメソッドをスーパークラスに移動することについて
- 19. いつPython 3への移行について考えるべきか?
- 20. は、私はおそらく何かを明らかに不足しているか、間違った方法でこのことについてつもり
- 21. Javaのソケットとマルチスレッドについて知りたいこと
- 22. 私は知っているすべてがコレクションのタイプであるときに、TのタイプをC#Genericコレクションで見つけることができますか?
- 23. Cのクロスプラットフォームソケットライブラリ(WindowsとLinux)について知っていますか?
- 24. SQL Server ExpressとC#のセットアップチュートリアルについて知っていますか?
- 25. riはすべてのルビークラスについて知っていますか?
- 26. デバイスの画面が大きくなっていることを知るには?
- 27. Railsは移行が実行されたことをどのように知っていますか?
- 28. ScrollViewで起こっているタッチイベントについて、ギャラリーにどのように通知できますか?
- 29. 私は、java(したがって、おそらくC)はこれで全く問題がないことに気づいたJava
- 30. すべてのJavaアプレットはどこに行きましたか?