initialize(またはinit)の反対は何ですか?[閉まっている]


94

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

可能な名前は次のとおりです。release、remove、dispose、clearなど。

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


1
破壊しますか?(さらに手紙が必要)
デイウィン

31
これがどのように建設的ではないかはわかりませんが、以下の回答を簡単にスキャンすると、多くの開発者が反意を抱いていないことがわかります。IMOメソッド名は非常に重要であり、「初期化」には明確な反意語はありませんが、一般的で有用な用語です。
イヤーカム

2
悲しいことに、質問が閉じられてから回答を追加することはできなくなりました(earcamが言ったように、これは建設的ではないのですか?)ので、ここに回答を追加します。短いコメントに優しい形はこれです:使用Initializeあなたがない場合にのみ、ない反意語を必要とします!別の動詞を選択する必要がある場合(ほとんどの場合、より説明的な代替があります)。さらに参照するために、GitHub でプログラマ向けの反意語のリストを提供しています。
マックストルシャ

3
私がまったく同じ質問をしたとき、これに対する答えが非常に役立った。閉じてはいけません。
イアンゴールドビー

3
私は同意します...この質問を閉じることはまったく役に立ちません。
ハラルド

回答:


80

私が使う :

  • initialize()
  • terminate()

私はそれがより適切だと思う:

  • それは両方の長い単語であるため、コードでそれを見るのは難しいです(私はinitを使用しません)
  • 正しい英語です(AFAIK)
  • 私の頭の中で、終了はあいまいさを避けます。begin(endに一致)、start(stopに一致)、create(destroyに一致)、setup(unsetに一致)、load(unloadに一致)などには一致しません。

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


6
+1 terminate()。それは一般的に明確であり、おそらくユースケース全体で合理的に適用可能であると感じています。
ベン・ホッキング

9
私は、他のすべての提案が正確でよく知られている反意語を持つ単語に関する「終了」に完全に同意しています。destroy(作成)、tearDown(setUp)、close(オープン)、release(取得)など。驚くほど多くの開発者がこれを見逃している。
イヤーカム

防御する。オブジェクトを使い終わったら、それをオブジェクトで行います。(しかし、Terminateが私の2番目の選択肢になります。)
Nicki

3
@Nickiは...各オブジェクトの破壊でウィンドウを再インストールする必要がありますする高価なルックス
Klaim

以下のようearcam指摘:それはset up(一致するtear down)ではないsetup(英語ではそのような動詞はありません)。
マックストルシャ

25

通常、オブジェクトの機能に応じて、Finalize、Destroy、またはTerminateを使用します。

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


残念ながら、「Finalize」は「Initialize」の同義語または反意語のいずれかになる可能性があるため、一般的には不適切な選択になると思います。ただし、「破棄」と「終了」は候補です。「最終形式または完成した形式にする」という定義については、mw.com / dictionary / finalizeを参照してください。私はそれがコードでこのように使用されるのを見てきました。つまり、オブジェクトのファイナライズは、その初期化の最後のステップです。対照的に、JavaのObjectクラスにはfinalize()、オブジェクトへの参照がこれ以上ないことを示すメソッドがあります。
ベンホッキング

@BenHockingあなたは「最終形または完成形にする」という間違った方法を取っていると思います。私にとって、これはオブジェクトの処理が完了したことを意味し、すべてのプロパティをクリーンアップ/リセットするときが来ました。これはOPが彼がやりたいと言っていることです。だから、その定義が私の主張を証明していると思う。
ブライアンディショー

また、ダウン投票の理由に関するフィードバックはありますか?(私は彼がダウンボターであると示していなかったため、@ BenHockingではなかったと仮定しています)
ブライアンディショー

a)私が反対票を投じなかったのはあなたです。あなたの提案は合理的であり、私はこの議論が役立つと思います。b)finalize()が使用したのとまったく同じ意味で使用されているのを見ました。たとえば、Delauneyの三角形化を計算するクラスでは、すべてのポイントが追加された後、finalize()が呼び出されて、結果を使用する前に追加の計算が行われます。その場合、オブジェクトは変更のために開かれていないが、まだ使用できる、つまり、三角化の結果を取得するために利用可能であることが示されました。
ベン・ホッキング

14

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

「デフォルト」状態がリソースを必要としない場合、その操作のその部分を実行resetするために呼び出すことができる場合がありますrelease


6

close()

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

ない finalize()

finalize()はJavaのガベージコレクターに固有の何かを意味し、その動作方法は少し奇妙です。Javaがfinalize()で行うことを正確に望むのでない限り、私はfinalize()を避けます。


2
Javaでfinalize()について正当な点を指摘します、OPは、質問が「メソッド名」を持つ他のOO言語(C ++など)ではなく、Javaを具体的に扱っていることを私が見たことをどこにも示しませんでした。
エリスコ

C#ではFinalize、クラスのインスタンスを破棄するために使用されます。
オリビエジャコット-デスコンブ

4

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


4
私の考えでは、「破壊」は「作成」と組み合わされています。
エリスコ

4

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

  • クリア
  • リセットする
  • 非表示(UIコンテキスト内)

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

  • init- fini
  • 初期化-初期化解除
  • 作成-破壊

あなたの場合、私は好むと思いますhide。必要に応じてメモリ/リソースを解放できます-重要なことは、それがオプションであるということです。


3

私の最初の考えは分解でしたが、それは多くのテストフレームワークで使用されています。ファイナライズと廃棄にも同様の問題があります。リセットまたはクリーンアップは両方とも良い選択のようです。再初期化により、初期化された状態に戻ることが明確になります。これは、戻る状態が初期状態である場合に適しています。

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


これがそれ自体どのように問題であるかはわかりません。確かに、FinalizeDispose.NETコードに出ています。それ以外は、確立された名前の再利用に問題はありません。
コンラッドルドルフ

1
@KonradRudolph確立された名前を再利用することは、概念が非常にうまく整合していれば問題ありません。私がリストした用語はどれも、彼が説明していると私が理解しているものとうまく一致していません。だから、あなたは「考える」という言葉を見て、それが何をするのか知っていて、間違っているので、もっと混乱するでしょう。
サイン

3

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

resetオブジェクトをデフォルトにリセットしている場合は、適切な用語のようです。reinitializeこのオブジェクトの使用方法が似ている場合にも適切ですinitialize。このメソッドは、メッセージを受信して​​いるオブジェクトではなく、他のオブジェクトを破棄するようです。この場合、上記のいずれかで問題ありません。もしあなたが本当に反対のことをしていて、init破壊されるレシーバーを準備しているdisposeなら、良い選択でしょう。


1

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

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

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

init vs(何でも)の概念は(constructor vs destructor)またはjava finalizeに似ています。

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


参考:finalizeJavaで予約されています。
バジルブルク

0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.