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

10
initialize(またはinit)の反対は何ですか?[閉まっている]
この用語はメソッド名として使用されます。このメソッドは、ユーザーインターフェイスの一部が非表示(または削除)になったときに呼び出され、値をデフォルトにリセットし、使用されなくなったオブジェクトを破棄するために使用されます。 可能な名前は次のとおりです。release、remove、dispose、clearなど。 どちらが最も適切だと思いますか?

5
パラメーターを介して、または戻り値によってC構造体を初期化する必要がありますか?[閉まっている]
私が働いている会社は、次のような初期化関数を使用して、すべてのデータ構造を初期化しています。 //the structure typedef struct{ int a,b,c; } Foo; //the initialize function InitializeFoo(Foo* const foo){ foo->a = x; //derived here based on other data foo->b = y; //derived here based on other data foo->c = z; //derived here based on other data } //initializing the structure Foo foo; InitializeFoo(&foo); 私はこのような構造体を初期化しようとするいくつかのプッシュバックを得ました: …

2
Swiftがセミコロンを必要としないのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私は通常c#またはObjective-Cのいずれかでコーディングし、最近Appleの新しいプログラミング言語であるSwiftを習得しました。 私が最初に気づいたのは、Swiftで行を終了するためにセミコロンを追加する必要がないことですが、少なくともテストしたことからすれば、コンパイラに干渉しません。 私が書くとき: int someNumber = 0; Objective-Cでは、セミコロンはプログラムに、行が終わって次の行に落ちないことを伝えます。 Swiftでは、変数を宣言できます var someNumber:Int = 5 セミコロンを追加しないと、システムはこれが行の終わりであることを認識します。 一部の言語でこれを行うことができ、他の言語ではできないことは何ですか?最後にセミコロンを追加する均一なシステムを維持してみませんか?

3
ループ内で変数を定義するのは良いですか?[閉まっている]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 4年前に閉鎖されました。 私のインストラクターはかつて、ループ内で変数を定義するべきではないと教えてくれましたが、正直なところまだ理由がわかりません。 その欠点は何ですか? 体はそれを私に説明できますか?

1
デフォルトのコンストラクタを使用できなくすることは問題ありませんか?
デフォルトのコンストラクターについて具体的に尋ねる コンストラクターがオブジェクトのすべてのデータを初期化する場合、適切な初期化なしでは使用できないクラスを作成すると、デフォルトのコンストラクターが役に立たなくなるわけではありませんか?考慮してください: // A class for handling lines in a CSV file class CSV_Entry { private: unsigned num_entries; std::string string_version; std::vector<std::string> vector_version; ...etc public: CSV_Entry(); CSV_Entry(const std::string& src_line); // returns a vector copy of the original entry std::vector<std::string> get_vector_snapshot(); } int main( void ) { ...etc CSV_Entry example = CSV_Entry(); …

5
Webアプリケーションの起動時間は本当に重要ですか?
アプリケーションの起動時に初期化コードを追加することについて誰かと会話し、起動時間の増加を引き起こすことについて不平を言いました。彼は本当に理由を述べることができませんでした(直感や何か、知らない)。これは頻繁に使用するアプリケーションではなく、約1分程度で開始され、年に数回展開します。 私はしばらく前にSOに関する質問でそのようなアドバイスを読んだことを覚えています。 私は30秒から4〜5分で開始したWebアプリで作業しましたが、オンラインになるとそれらは揺れ動きました。 だから私は何が欠けていますか?金融市場、医療アプリケーション、宇宙探査などのように、重要なアプリケーションでなければ...分からない...起動時間は本当に重要ですか? PS私は厳密にWebアプリについて言及していますが、デスクトップアプリは急速に起動します。

6
オブジェクトの適切なインスタンス化に失敗する可能性のあるコンストラクターの作成方法
場合によっては、失敗する可能性のあるコンストラクターを記述する必要があります。たとえば、次のようなファイルパスでオブジェクトをインスタンス化するとします。 obj = new Object("/home/user/foo_file") パスが適切なファイルを指している限り、すべて問題ありません。ただし、文字列が有効なパスでない場合は、問題が発生するはずです。しかし、どのように? あなたは出来る: 例外を投げる nullオブジェクトを返します(プログラミング言語でコンストラクタが値を返すことができる場合) 有効なオブジェクトを返しますが、そのパスが適切に設定されなかったことを示すフラグが付いています(ugh) 他の? さまざまなプログラミング言語の「ベストプラクティス」がこれを異なる方法で実装すると思います。たとえば、ObjCは(2)を好むと思います。ただし、(2)は、コンストラクターが戻り型としてvoidを持たなければならないC ++で実装することは不可能です。その場合、(1)が使用されると考えます。 選択したプログラミング言語で、この問題の処理方法とその理由を説明できますか?

2
PHPでクラスメンバーを初期化するためのベストプラクティス
私のコンストラクタには次のようなコードがたくさんあります:- function __construct($params) { $this->property = isset($params['property']) ? $params['property'] : default_val; } プロパティ定義でデフォルト値を指定するよりも、これを行う方が良いですか?すなわちpublic $property = default_val?時々、デフォルト値のロジックがあり、いくつかのデフォルト値は他のプロパティから取得されるため、コンストラクターでこれを行っていました。 デフォルト値のすべてのロジックが分離されるようにセッターを使用する必要がありますか?

4
CQRS + ESのオブジェクトはどこで完全に初期化する必要がありますか:コンストラクター内、または最初のイベントを適用するとき?
OOPコミュニティでは、クラスコンストラクターがオブジェクトを部分的または完全に未初期化のままにしてはならないという合意が広まっているようです。 「初期化」とはどういう意味ですか?大まかに言えば、新しく作成されたオブジェクトを、そのクラスのすべての不変条件が保持される状態にするアトミックプロセス。これはオブジェクトに最初に発生するものであり(オブジェクトごとに1回だけ実行する必要があります)、初期化されていないオブジェクトを取得することは許可されません。(したがって、クラスコンストラクターでオブジェクトの初期化を正しく実行するための頻繁なアドバイスです。同じ理由で、Initializeメソッドはしばしばアトミック性を分解し、まだ使用されていないオブジェクトを取得して使用することを可能にするため、眉をひそめられます明確な状態にあります。) 問題: CQRSとイベントソーシング(CQRS + ES)を組み合わせると、オブジェクトのすべての状態変化が順序付けられた一連のイベント(イベントストリーム)でキャッチされ、オブジェクトが実際に完全に初期化された状態にいつ到達するのか疑問に思います。クラスコンストラクターの最後、または最初のイベントがオブジェクトに適用された後? 注:「集約ルート」という用語の使用は控えています。必要に応じて、「オブジェクト」を読むたびに置き換えてください。 議論の例:各オブジェクトが何らかの不透明なId値(GUIDと考える)によって一意に識別されると仮定します。そのオブジェクトの状態変化を表すイベントストリームは、同じId値によってイベントストアで識別できます(正しいイベントの順序については心配しないでください)。 interface IEventStore { IEnumerable<IEvent> GetEventsOfObject(Id objectId); } さらに、2つのオブジェクトタイプCustomerとがあると仮定しますShoppingCart。焦点を当てましょうShoppingCart:作成されたとき、ショッピングカートは空であり、正確に1人の顧客に関連付けられている必要があります。最後のビットはクラス不変です:にShoppingCart関連付けられていないオブジェクトはCustomer無効な状態です。 従来のOOPでは、コンストラクターでこれをモデル化できます。 partial class ShoppingCart { public Id Id { get; private set; } public Customer Customer { get; private set; } public ShoppingCart(Id id, Customer customer) { this.Id = id; this.Customer = customer; } …


1
大きな静的初期化子はコードの匂いですか?
SimpleExpandableListAdapterAndroidで拡張しています。Androidのアダプターは、コンストラクターにかなり複雑な引数が多数あり、セッターやビルダーがないため、あまりうまく実装されていないと思います。私のクラスでは、これらの引数のほとんどは呼び出し元のクラスに依存していないため、内部的に構築したいと思います。ただし、引数はネストされたListsであり、プログラムで構築する必要がある整数と文字列の配列です。 superコンストラクタの前に何もsuper呼び出すことができず、呼び出しが戻る前にインスタンスメソッドを呼び出すことができないため、現在、呼び出しから呼び出す静的メソッドがいくつかありsuperます。 super(getContext(), initGroupData(), groupLayout, initGroupFrom(), initGroupTo(), initChildData(), childLayout, initChildFrom(), initChildTo()); これを処理する方法は3つあります。今と同じように静的メソッドを呼び出す、おそらくこれらの同じメソッドを呼び出して静的変数を初期化して静的変数を初期化する大きな静的イニシャライザを使用するsuperか、これらのメソッドをすべてビルダーにカプセル化します。 今はビルダーに傾いていると思いますが、これを処理するためのより良い方法があるかどうか疑問に思っています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.