2009-11-19 76 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