web-dev-qa-db-ja.com

初期化(またはinit)の反対は何ですか?

この用語はメソッド名として使用されます。このメソッドは、ユーザーインターフェイスの一部が非表示(または削除)のときに呼び出され、値をデフォルトにリセットして、使用されなくなったオブジェクトを破棄するために使用されます。

可能な名前は、解放、削除、破棄、クリアなどです。

あなたはどちらが最も適切だと思いますか?

102

私が使う :

  • initialize()
  • terminate()

私はそれがより適切であると思います:

  • それは両方とも長い単語であるため、コードでそれを見るのは難しいです(私はinitを使用しません)
  • 正しい英語です(AFAIK)
  • 私の頭では、終了はあいまいさを回避します。開始(終了に一致)、開始(停止に一致)、作成(破棄に一致)、セットアップ(未設定に一致)、ロード(アンロードに一致)などとは一致しません。

一部の人はそれが味の問題を見つけることができます。

84
Klaim

私は通常、オブジェクトの機能に応じて、ファイナライズ、破棄、または終了のいずれかを行います。

あなたが説明する場合のために、ファイナライズは私のスキームに基づいて私が行くものです。

26
Brian Dishaw

オブジェクトやその他のリソースを破棄するメソッド(たとえば、破棄の準備として)にはreleaseが好きです。値をデフォルトにリセットするメソッドにはresetを選択します。

「デフォルト」の状態でリソースが不要な場合、resetreleaseを呼び出してその操作の一部を実行できる場合があります。

14
comingstorm

close()

まだ誰もclose()を提案していません。 Java 7には新しい「リソースを使って試す」機能があります。自動的にクリーンアップされるクラスは、単一のclose()メソッドを持つJava.lang.AutoCloseableを実装する必要があります。shutdown()またはcleanup ()も良いかもしれません。

ないfinalize()

finalize()は、Javaのガベージコレクターに固有の何かを意味し、その動作方法は少し奇妙です。 Javaがfinalize()で何をするかを正確に知りたいのでない限り、私はfinalize()から離れます。

7
GlenPeterson

アクションがオプションであるか必須であるか(リソースをリークすることなく)、言語がコンストラクタ/デストラクタをサポートしているかどうかによって異なります。私が使用するオプションの場合:

  • 晴れ
  • リセット
  • 非表示(UIコンテキスト内)

逆のアクションが必要な他の場合(コンストラクター/デストラクターのない言語で、またはデストラクターがリソースを解放しない場合)、私は以下を使用します。

  • init-fini
  • 初期化-非初期化
  • 作成-破壊

あなたの場合、私はhideを好むと思います。必要に応じてメモリ/リソースを解放することもできます-重要なことは、それがオプションであることです。つまり、そうしなかった場合、デストラクタが処理します。

4
Oskar N.

私は「破壊」がとても好きです。あなたがビデオゲームか何かを書いていない限り、より明確にすることはできませんでした。

4
Eliot Ball

私の最初の考えは解体でしたが、それは多くのテストフレームワークで使用されています。ファイナライズと破棄には同様の問題があります。リセットするか、両方をクリーンアップすることをお勧めします。 Reinitializeは、初期化された状態に戻ることを明確にします。これは、戻る状態が初期状態である場合に適しています。

現在のコンテキストで用語が過負荷になっていないことを確認してください。

3
Sign

また、値をデフォルトにリセットし、使用されなくなったオブジェクトを破棄するために使用されます。

オブジェクトをデフォルトにリセットする場合、resetは適切な用語のようです。 reinitializeは、このオブジェクトの使用がinitializeと似ている場合にも適切です。このメソッドはotherオブジェクトを破棄するようですが、メッセージを受信して​​いるオブジェクトではありません。この場合、上記のいずれかで問題ありません。 initの反対の処理を実際に行っており、レシーバーを破棄する準備をしている場合は、disposeが適しています。

3
Caleb

http://www.wordhippo.com/what-is/the-opposite-of/initialize.html

私はファイナライズに行きます。しかし、正確なユースケースには少し依存していると思います。リソースの解放、接続のクローズ、ファイルの作成に主に使用する場合、リリースの方が意味があります。

一般的な使用の概念を探している場合、または標準化している場合は、意味のない、リリースや削除などの特別な意味のないものを選択します。

Init vs(whatever)の概念は(constructor vs destructor)に似ています、またはJava finalizeで。

:言語に概念構成体と破壊オブジェクトがある場合、init()を使用する必要はほとんどありません。

1
user1063963

メソッドが呼び出されているオブジェクトが使用されなくなる場合は、標準のデストラクタを使用します。しかし、そうではないように聞こえるので、一般的になりすぎるのではなく、オブジェクト自体が非表示になっている場合はhide()のようになり、合成されたオブジェクトの場合はhideUserInterfacePart()のようになります。隠されています。

0
Karl Bielefeldt