2
我知道我可以使用'查找用法'來找到在一個類中調用方法的內容。 對於給定類的所有方法,是否有這樣的方法? (或者文件中的所有方法)PyCharm:列出一個類的所有方法的所有用法
用例:我試圖重構一個神類,它幾乎可以肯定是幾個類。能夠看到神類方法的哪個子集,與它交互的類使用會很好。似乎PyCharm已經完成了這一點,但不讓我擴展它。
我使用PyCharm 2016年1月2日
我知道我可以使用'查找用法'來找到在一個類中調用方法的內容。 對於給定類的所有方法,是否有這樣的方法? (或者文件中的所有方法)PyCharm:列出一個類的所有方法的所有用法
用例:我試圖重構一個神類,它幾乎可以肯定是幾個類。能夠看到神類方法的哪個子集,與它交互的類使用會很好。似乎PyCharm已經完成了這一點,但不讓我擴展它。
我使用PyCharm 2016年1月2日
這是可能的,但你必須處理抽象的,否則Pycharm不知道問題的方法屬於你的特定類。 AKA - Type Hinting
在沒有類型提示的抽象層中調用該方法的任何實例都不會被找到。
實施例:
#The class which has the method you're searching for.
class Inst(object):
def mymethod(self):
return
#not the class your looking for, but it too has a method of the same name.
class SomethingElse(object):
def mymethod(self):
return
#Option 1 -- Assert hinting
def foo(inst):
assert isinstance(inst, Inst)
inst.mymethod()
#Option 2 -- docstring hinting
def bar(inst):
"""
:param inst:
:type inst: Inst
:return:
:rtype:
"""
inst.mymethod()
AFAIK存在PyCharm沒有這樣的選擇。此外,我不確定我能看到這樣一個功能的好處:假設你有一個有兩種方法的類,並且你有這個功能,並且它會說這兩個方法在你的項目中使用了146次。現在讓我們說一個方法只用了一次,另一個方法用了145次。數字146意味着什麼?你能用這樣的信息做什麼? – alfasin
我想告訴:[類]使用方法A,[類]使用方法B和/或類A使用[方法],類B使用[不同的方法集],類C使用[另一個不同的方法集]等 然後,我可以更輕鬆地弄清楚我的上帝課程中是否有不同的功能子集,這將幫助我重構它。 – DeTeReR
我會爭辯說,分組應該由具有相關功能的方法組來完成,而不是由用法組成。做清理自頂向下可能會幫助您清理其他類,同時使用原始方法(按使用分組 - 自下而上)可能會在不應耦合的代碼模塊/類之間產生不必要的耦合。 – alfasin