タグ付けされた質問 「construction」

3
「開始」、「実行」、「実行」の方法は良い習慣ですか?
現在、Startメソッドを実装する多くのクラスを持つコードベースで作業しています。これは私にとって二段階の構成のように思えますが、私は常に悪い習慣だと考えていました。これとコンストラクターの違いはわかりません。 通常のオブジェクト構築の代わりに開始メソッドを使用するのが適切なのはいつですか? コンストラクターを使用するのはいつですか? 編集:私はそれが関連しているとは思わないが、プログラミング言語はC#であり、JavaまたはC ++に等しく適用できる

6
新しいオブジェクトを作成するか、すべてのプロパティをリセットしますか?
public class MyClass { public object Prop1 { get; set; } public object Prop2 { get; set; } public object Prop3 { get; set; } } のオブジェクトmyObjectがMyClassあり、そのプロパティをリセットする必要があるとします。新しいオブジェクトを作成するか、各プロパティを再割り当てする方が良いでしょうか?古いインスタンスで追加の使用法がないと仮定します。 myObject = new MyClass(); または myObject.Prop1 = null; myObject.Prop2 = null; myObject.Prop3 = null;

5
メソッドパラメータではなくコンストラクタにデータを渡すと、クラスの概念はどのように変わりますか?
パーサーを作成しているとしましょう。1つの実装は次のようになります。 public sealed class Parser1 { public string Parse(string text) { ... } } または、代わりにテキストをコンストラクタに渡すこともできます。 public sealed class Parser2 { public Parser2(string text) { this.text = text; } public string Parse() { ... } } どちらの場合も使用法は簡単ですが、他のものと比較して、へのパラメーター入力を有効にするとはどういう意味Parser1ですか?他のプログラマーがAPIを見たときに、どのメッセージを送信しましたか?また、特定の場合に技術的な利点/欠点はありますか? 2番目の実装ではインターフェイスがまったく意味がないことに気づくと、別の質問が出てきます。 public interface IParser { string Parse(); } ...最初のインターフェイスが少なくともいくつかの目的に役立つ場合。これは特に、クラスが「インターフェース可能」かどうかを示していますか?

3
暗黙の引数変換に依存することは危険だと考えられていますか?
C ++には、引数の型が予期されたものでない場合に、パラメーターの型の一致するコンストラクターを自動的に呼び出す機能があります(適切な名前はわかりません)。 これの非常に基本的な例はstd::string、const char*引数付きのを期待する関数の呼び出しです。コンパイラーは、適切なstd::stringコンストラクターを呼び出すコードを自動的に生成します。 読みやすさに関しては、私が思うほど悪いのでしょうか。 次に例を示します。 class Texture { public: Texture(const std::string& imageFile); }; class Renderer { public: void Draw(const Texture& texture); }; Renderer renderer; std::string path = "foo.png"; renderer.Draw(path); いいですか?それとも行き過ぎですか?私がそれをするべきではない場合、どういうわけかClangまたはGCCにそれについて警告させることができますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.