需要在Eclipse中重构字段名称,这应该同时更改getter/setter。

15

我需要在Eclipse中进行大量的重构(实际上需要更改字段名称)。它会更改所有出现的字段引用,但有一件事是它不会更改基于以前名称生成的getter/setter名称。

我们是否有任何插件可以做到这一点或者需要进行任何配置更改?

4个回答

23

是的,在Galileo中,“重命名”对话框有一个选项可以更改字段的setter和getter - 请看这里。(或者,您可以在选择字段后两次使用ALT+SHIFT+R

在Galileo之前,您需要执行3个操作而不是一个(也不是太糟糕)。


2
非常感谢Bozho :) 现在对我来说好多了。 虽然还有一个小问题,它没有考虑setter方法的参数名。 - Reddy
嗯,是的,那是一个公正的观点。你可以保留它,或者你可以手动更改它。 - Bozho
3
你也可以按下 ALT + SHIFT + R 两次来打开重命名对话框。 - Emil L
4
链接已失效,请参阅http://web.archive.org/web/20100513020351/http://satukubik.com/2009/08/07/eclipse-tips-renaming-field-and-its-settergetter/。在Eclipse中重命名字段及其setter/getter的技巧。 - CharlesB

2

ALT+SHIFT+R是重命名的默认键盘快捷键...非常棒!


实际上,它确实会为您提供一个对话框,其中包含重命名getter和setter方法的选项。 - les2
2
嗨LES2,是的..那是键盘快捷键,但在Galileo中,您必须按两次才能获取对话框。 - Reddy

1

实际上,'getter'和'setter'的名称与内部字段名称相同并非必须。事实上,许多人认为将它们联系在一起违反了面向对象编程的数据隐藏原则。拥有getter和setter的部分目的是保护代码的其余部分免受类内部更改(例如重命名)的影响。

话虽如此,如果您绝对决定需要重命名方法以及字段,则Eclipse可以为您完成。您必须分别执行它们,但用于重命名字段的相同“重命名”也适用于方法。只需选择该方法并执行之前所做的操作即可。


谢谢DJClayworth。但是,一个与其getter/setter同名的私有变量如何违反数据隐藏原则? 由于它是私有的,没有人能够直接访问它..对吧? - Reddy
你说得没错。但是,如果你在更改变量名称时强制更改getter和setter,那么这将违反数据隐藏,因为类的内部结构的更改将强制要求与之交互的类进行更改。如果您重新构造类以使内部数据以不同格式存储,则可能需要考虑一下该怎么办,以便该字段不再存在。良好的设计意味着您需要保留getter和setter:那么您如何称呼它们? - DJClayworth
现在我明白了。在我的情况下,这是新代码,我只需要在提交之前更改名称2、3次。虽然这可能会违反OOPS原则,但我认为,如果我也可以更改所有对getter/setter的调用(因为所有调用都发生在我控制的代码中),那么我们不应该将它们更改以使代码更易读吗? - Reddy
是的,我同意你这么做,前提是代码库仍然足够小,可以适合一个Eclipse项目(以便自动重命名可以完成任务),并且没有在该Eclipse项目之外使用方法的代码。 - DJClayworth

0
步骤一:进入“包资源管理器”。 步骤二:移动到需要重命名的字段名称。

enter image description here

第三步:按F2键。将出现重命名对话框。 第四步:选中复选框以重命名getter和setter。单击“确定”。

enter image description here

你完成了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接