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

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

您认为哪种方法最合适?

评论

破坏? (需要更多字母)

看不清楚这是不是有建设性的,快速浏览下面的答案就可以发现许多开发人员并没有获得反义词。 IMO方法名称非常重要,“ initialize”没有明确的反义词,但它是一个通用且有用的术语。

可悲的是,自从问题关闭以来,我再也无法添加答案了(正如Earcam所说:这怎么没有建设性?),所以我将在此处添加答案。简短的,易于注释的形式是:仅在不需要反义词时才使用Initialize!如果您需要选择另一个动词(大多数情况下,会有更多描述性的替代词)。为了进一步参考,我在GitHub上提供了我的程序员反义词列表。

当我有完全相同的问题时,我发现此答案非常有帮助。它不应该被关闭。

我同意...结束这个问题根本没有帮助。

#1 楼

我使用:


initialize()

我觉得更合适:


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

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

评论


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

–本·霍金
2012年8月31日上午10:32

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

–earcam
2012年12月31日下午14:26

破坏当我用完对象时,这就是我要做的。 (但是终止是我的第二选择。)

–尼克
2013年5月5日13:45



@Nicki看起来很昂贵,必须在每个对象销毁时重新安装Windows。

–克莱姆
13年5月5日在20:43

正如Earcam所指出的:它是建立的(与拆卸匹配)而不是建立的(英语中没有这样的动词)。

– Max Truxa
15年4月16日在18:21

#2 楼

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

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

评论


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

–本·霍金
2012年8月31日上午10:30

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

–布莱恩·迪绍(Brian Dishaw)
2012年8月31日下午16:52

另外,为什么要投反对票? (我假设这不是@BenHocking,因为他没有表明他是低俗主义者)

–布莱恩·迪绍(Brian Dishaw)
2012年8月31日下午16:55

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

–本·霍金
2012年8月31日19:32

#3 楼

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

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

#4 楼

close()

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

不是finalize()


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

评论


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

– EliSko
17-10-19在20:05

在C#中,Finalize用于销毁类的实例。

–奥利维尔·雅科特·德ombes
18年11月6日在19:52

#5 楼

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


清除
重置
隐藏(在UI上下文中)

在其他情况下,相反的动作是必需(在没有构造函数/析构函数的语言中,或者在析构函数不释放资源的情况下),我使用:
创建-销毁

在您的情况下,我认为我更喜欢hide。如果愿意,它仍然可以释放内存/资源-重要的是它是可选的,即如果您不愿意,则析构函数将对其进行处理。

#6 楼

我很喜欢“破坏”。除非您正在编写视频游戏之类的东西,否则就不会更加清晰。

评论


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

– EliSko
17-10-19在20:08

#7 楼

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

请确保您的术语在当前上下文中不过载。

评论


我看不出这本身就是一个问题。 .NET代码中已授予,完成和处置。除此之外,重新使用已建立的名称不会出现问题。

–康拉德·鲁道夫(Konrad Rudolph)
2012年8月30日在16:09



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

–登录
2012年8月30日16:20

#8 楼


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


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

#9 楼

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

我要敲定。但是我认为这完全取决于确切的用例:例如如果您主要将其用于释放资源,关闭连接,然后释放文件,则将更有意义。

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

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

评论


仅供参考:finalize在Java中保留。

–罗勒·布尔克
17年5月27日在6:16

#10 楼

如果调用该方法的对象将不再使用,我将只使用标准析构函数。不过,这听起来并不像这种情况,因此,与其说它太通用,不如说是一个更好的名字,如果该对象本身被隐藏,则名称类似于hide(),如果隐藏了组成对象,则名称类似于hideUserInterfacePart()