2009-11-19 92 views
1

使用eclipse的开发人员不能错过Cntrl + Shift + G组合 - 查找工作区中特定成员/方法/类的所有引用的最简单方法。 考虑一个场景,你是一个维护用java编写的web应用程序的新人。现在,您即将更改方法签名,并且您会执行Cntl + Shift + G来查找对所述方法的所有引用(是的,希望您没有执行依赖注入/反射等)。然而,一个新人,不希望在应用程序中搞砸任何功能。如何确保函数依赖不受影响?功能依赖分析

我想..这个问题有点不清楚......让我重述一下......假设你正在改变一些功能(如果在业务规则或whateva中循环) - 这将定义更改在上下文中的其他内容应用程序..在这一点上,你希望在日食中有一些东西(一个插件?),它会告诉你 - “嘿,noob..don't改变这 - 它会影响这...” - 现在,如果你是创建一个这样的日食(插件?) - 你会在哪里开始? (标注scr代码的部分并引入偏差树等)

+0

如果您有单元测试,那么它们应该足以表明更改已打破预期行为。 – vickirk 2009-11-19 10:48:17

+0

单元测试通过代码? – Jay 2009-11-19 11:30:37

回答

1

也许我不明白你的问题,但我想我可能有一个答案。看看nWire for Java(或PHP)。它是代码探索的插件。关注一段代码,开发人员可以快速确定方法被调用的位置,类的使用位置等。这使得更容易理解您即将更改的内容。

我是这个插件的开发者。如果这不是你正在寻找的东西,请告诉我,我很乐意更好地了解你在找什么。

+0

@zvikico我刚刚检查了nWire的演示。它看起来很漂亮,但我想要的是非常不同的..试想一下.. 假设你有一个“项目”和“资源”在一个项目上工作。显然,代码不是自我意识的,但我正在谈论改变项目中某些东西(功能改变)的可能方式,这会改变应用程序在“资源访问项目”方面的行为方式 - 我想..它是一个低劣的例子..但我希望它有道理? – Jay 2009-11-19 11:26:19

+0

alrite ..我读了..我添加了什么,它对我没有意义.. :-( 这里是另一个例子..说你有一个共享软件的应用程序,你即将注册它,所以有这个“名称“和”密钥“提示符,并说,在代码中有一个这样的检查:如果(从名称生成密钥)= 然后使程序注册,否则失败; 现在,如果我改变if条件! =而不是=,这改变了程序的行为方式,不是吗? 如果您的IDE以某种方式警告您可能会影响什么,这不是很好吗? – Jay 2009-11-19 11:29:58

+0

您正在修改一段代码。这段代码会影响所有使用它的代码。干净利落。如果你知道这些作品是什么,你就知道会受到什么影响。当然,你应该继续探索这种依赖关系,以确定所有可能发生变化的领域。所以,我没有看到区别。它只是从用户界面的角度来看? (即我更改了代码,我想知道我的用户界面的哪些部分会受到影响?) – zvikico 2009-11-19 11:40:35

1

此外:ALT + SHIFT + C是更改方法签名的方法。 ALT + SHIFT + G“only”找到引用,当然这很有帮助。 vickirk在此提到最重要的方面:没有测试和良好的代码覆盖率,您无法应用任何更改,而不会冒险之后冒失败的系统。

来自Robert C Martin的书“Working with Legacy Code Effectivelyly”很好地解释了这一点:所有未被测试覆盖的代码都是遗留代码。您可以得出结论,在您应用任何功能更改之前,您需要确保有足够的测试覆盖率。

在源代码中标记零件似乎是一个坏主意,因为这些标签需要额外维护,这通常不会发生在项目中。 :)

+0

+1标记=坏主意 – Jay 2009-11-19 11:32:08