初始化(或初始化)的反义词是什么?[关闭]


93

该术语将用作方法名称。当用户界面的一部分被隐藏(或删除)时,将调用该方法,该方法用于将值重置为默认值并处理不再使用的对象。

可能的名称是:释放,删除,处置,清除等。

您认为哪个最合适?


1
破坏?(需要更多字母)
Deiwin 2012年

30
看不清楚这是不是有建设性的,对以下答案的快速浏览显示许多开发人员并没有完全反义词。IMO方法名称非常重要,“初始化”没有明确的反义词,但它是一个通用且有用的术语。
earcam

2
可悲的是,自从问题关闭以来,我再也无法添加答案了(正如Earcam所说:这不是很有建设性的吗?),所以我将在此处添加答案。短,评论友好的形式是这样的:使用Initialize唯一的,如果你不是需要一个反义词!万一您需要选择另一个动词(大多数情况下,会有更多描述性的替代词)。为了进一步参考,我在GitHub 提供了我的程序员反义词列表
Max Truxa 2015年

3
当我遇到完全相同的问题时,我发现此答案非常有帮助。它不应该被关闭。
伊恩·戈德比

3
我同意...结束这个问题根本没有帮助。
哈拉尔德

Answers:


79

我用 :

  • 初始化()
  • 终止()

我觉得它更合适:

  • 很难在代码中看不到它,因为它们都是长字(我不使用init)
  • 这是正确的英语(AFAIK)
  • 在我的脑海中,终止避免产生歧义。它不匹配开始(匹配结束),开始(匹配停止),创建(匹配销毁),设置(匹配未设置),加载(匹配卸载)等。

有些人可能会发现它是口味问题。


6
为+1 terminate()。我认为它通常是明确的,并且可能合理地适用于所有用例。
本·霍金

9
我完全同意“终止”,所有其他建议都是针对带有确切,众所周知反义词的单词;销毁(创建),tearDown(设置),关闭(打开),发布(获取)等。令人惊讶的是有多少开发人员看不到这一点。
earcam

破坏 当我用完对象时,我就是这样做的。(但是Terminate是我的第二选择。)
Nicki

3
@Nicki看起来很昂贵,必须在每次破坏对象时重新安装Windows……
Klaim 2013年

正如Earcam所指出的:(不set up匹配tear downsetup(英语中没有这样的动词)。
Max Truxa 2015年

25

我通常根据对象函数的功能选择Finalize,Destroy或Terminate。

对于您描述的情况,根据我的方案,Finalize是我要使用的。


不幸的是,“最终化”可能是“初始化”的同义词或反义词,因此我认为通常这是一个糟糕的选择。但是,“毁灭”和“终结”是竞争者。请参阅mw.com/dictionary/finalize以获取“以最终形式或最终形式放置”的定义。我什至看到它在代码中使用了这种方式。即,完成对象的初始化是其初始化的最后一步。相反,Java的Object类具有一种finalize()方法,该方法指示不再引用该对象。
Ben Hocking

@BenHocking我认为您采用的是“以最终形式或最终形式输入”的错误方式。对我来说,这意味着您已经完成了该对象,现在该清理/重置所有属性了。这就是OP所说的他想做的。因此,我认为该定义证明了我的观点。
2012年

另外,对于为何反对投票有任何反馈吗?(我假设这不是@BenHocking,因为他没有表明他是
下降投票者

a)是的,我没有投反对票。您的建议是合理的,我认为这次讨论很有用。b)我看过的finalize()完全按照我的指示使用。例如,在计算Delauney三角化的类中,在添加所有点之后,将调用finalize()进行一些其他计算,然后才能使用其结果。在那种情况下,它表明该对象不再开放以进行修改,但是仍然可以使用,即获得三角化的结果。
本·霍金2012年

14

我喜欢release一种用于处理对象和其他资源的方法(例如,作为销毁的准备)。我会选择reset一种将值重置为默认值的方法。

如果“默认”状态不需要任何资源,则reset可以调用release以执行其部分操作。


6

close()

尚无人提议close()。Java 7具有新的“尝试资源”功能。自动清除的类必须实现java.lang.AutoCloseable,该类具有单个close()方法。shutdown()或cleanup()可能也不错。

finalize()

finalize()表示Java垃圾收集器特有的内容,它的工作方式有些奇怪。除非您确切想要Java使用finalize(),否则我将远离finalize()。


2
您对Java中的finalize()提出了正确的观点…… 但是 OP并未在我看到的任何地方表明问题专门针对Java,而不是任何其他带有“方法名称”的OO语言(例如C ++)。
EliSko

在C#中,Finalize用于销毁类的实例。
奥利维尔·雅各布·德斯科姆斯

4

我很喜欢“破坏”。除非您正在编写视频游戏之类的东西,否则无法说清楚。


4
在我看来,“破坏”与“创造”是成对的。
EliSko '17

4

我会说这取决于操作是可选的还是必需的(不泄漏资源),以及该语言是否支持构造函数/析构函数。对于可选情况,我使用:

  • 明确
  • 重启
  • 隐藏(在UI上下文中)

在需要采取相反操作的其他情况下(在没有构造函数/析构函数的语言中,或者在析构函数不释放资源的情况下),我使用:

  • 初始化- 菲尼
  • 初始化-取消初始化
  • 创建-销毁

就您而言,我想我会更喜欢hide。如果愿意的话,它仍然可以释放内存/资源-重要的是它是可选的,即,如果您不这样做,则析构函数将对其进行处理。


3

我的第一个想法是拆除,但是在许多测试框架中都使用了它。完成和处置也有类似的问题。重置或清理似乎都是不错的选择。重新初始化可以使您清楚地返回到初始化状态,如果您返回的状态是初始状态,则将非常好。

只要确保您的用语在当前上下文中不会过载即可。


我不明白这本身就是一个问题。授予,Finalize并且Dispose在.NET代码中。除此之外,重用已建立的名称没有任何问题。
康拉德·鲁道夫

1
@KonradRudolph如果概念非常吻合,则可以重用已建立的名称。我列出的任何一个词都与我理解他要描述的内容不符。因此,这将更加令人困惑,因为您会看到“思考”一词,我知道这样做是对的,而且是错误的。
2012年

3

并用于将值重置为默认值并处理不再使用的对象。

reset如果将对象重置为默认值,这似乎是一个好习惯。reinitialize如果此对象的用法与之相似,也可能是适当的initialize。听起来这种方法将处理其他对象,而不是接收消息的对象,在这种情况下,上述两种方法都可以。如果您确实在做相反的事情init并准备将接收器销毁,那dispose将是一个不错的选择。


1

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

我会去敲定。但是,我认为这与实际用例有点相关:例如,如果主要将其用于释放资源,关闭连接,然后释放文件,则将更有意义。

如果您正在寻找一个通用的概念或标准化,我会选择一些意义不大的东西,例如release或remove之类的没有特殊意义的东西。

init vs(whatever)的概念类似于(constructor vs destructor),或者在java finalize中。

注意:如果该语言具有构造和销毁对象的概念,则几乎不需要使用init()。)


仅供参考:finalize保留在Java中。
罗勒·布尔克

0

如果调用该方法的对象将不再使用,我将使用标准析构函数。但是,这听起来似乎并非如此,因此,更好的名称不是太笼统,而是像hide()对象本身被隐藏或hideUserInterfacePart()组合对象被隐藏一样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.