提取方法并在原始方法调用后插入调用
Extract method and insert call after original method call
我正在使用 PyCharm 并且我正在尝试进行一些重构,但不知道我如何能够以快速可靠的方式进行重构。
我有一个方法做的事情太多,我想将一部分提取到另一个方法中。提取的方法不应在提取方法中调用,而应在调用方法中调用。
当前状态
class User():
def doStuff(self):
calculateA()
calculateB()
calculateC()
def callerA():
# do other things before
obj.doStuff()
def callerAA:
# do other things before
obj.doStuff()
#... and many more methods calling doStuff method
求购
class User():
def doStuff(self):
calculateA()
def doOtherStuff(self):
calculateB()
calculateC()
def callerA():
obj.doStuff()
obj.doOtherStuff()
def callerAA:
obj.doStuff()
obj.doOtherStuff()
#... and many more methods calling doStuff method and doOtherStuff
# Now I'll be able to create this new method only doing a subset of the original method
def aNewMethod:
obj.doStuff()
这可能与 PyCharm 有关吗?一直在玩重构,但没有任何运气。提取到方法中是我认为的简单部分,但方法调用将在错误的位置结束。如果在 Intellij 中可行,我也有许可证,所以我可以切换。
没有这样的选项。欢迎您在 https://youtrack.jetbrains.com/issues/PY 提交功能请求
有关如何使用 YouTrack 的信息:https://intellij-support.jetbrains.com/hc/en-us/articles/207241135-How-to-follow-YouTrack-issues-and-receive-notifications
第 1 步:将两个新方法提取到您的 User class
这个:
class User():
def doStuff(self):
calculateA()
calculateB()
calculateC()
变为:
class User():
def doStuff(self):
newMethodA()
newMethodB()
def newMethodA(self):
calculateA()
def newMethodB(self):
calculateB()
calculateC()
第 2 步:内联 doStuff 方法
class User():
def newMethodA(self):
calculateA()
def newMethodB(self):
calculateB()
calculateC()
def callerA():
newMethodA()
newMethodB()
def callerAA():
newMethodA()
newMethodB()
步骤 3:重命名方法
我正在使用 PyCharm 并且我正在尝试进行一些重构,但不知道我如何能够以快速可靠的方式进行重构。
我有一个方法做的事情太多,我想将一部分提取到另一个方法中。提取的方法不应在提取方法中调用,而应在调用方法中调用。
当前状态
class User():
def doStuff(self):
calculateA()
calculateB()
calculateC()
def callerA():
# do other things before
obj.doStuff()
def callerAA:
# do other things before
obj.doStuff()
#... and many more methods calling doStuff method
求购
class User():
def doStuff(self):
calculateA()
def doOtherStuff(self):
calculateB()
calculateC()
def callerA():
obj.doStuff()
obj.doOtherStuff()
def callerAA:
obj.doStuff()
obj.doOtherStuff()
#... and many more methods calling doStuff method and doOtherStuff
# Now I'll be able to create this new method only doing a subset of the original method
def aNewMethod:
obj.doStuff()
这可能与 PyCharm 有关吗?一直在玩重构,但没有任何运气。提取到方法中是我认为的简单部分,但方法调用将在错误的位置结束。如果在 Intellij 中可行,我也有许可证,所以我可以切换。
没有这样的选项。欢迎您在 https://youtrack.jetbrains.com/issues/PY 提交功能请求 有关如何使用 YouTrack 的信息:https://intellij-support.jetbrains.com/hc/en-us/articles/207241135-How-to-follow-YouTrack-issues-and-receive-notifications
第 1 步:将两个新方法提取到您的 User class
这个:
class User():
def doStuff(self):
calculateA()
calculateB()
calculateC()
变为:
class User():
def doStuff(self):
newMethodA()
newMethodB()
def newMethodA(self):
calculateA()
def newMethodB(self):
calculateB()
calculateC()
第 2 步:内联 doStuff 方法
class User():
def newMethodA(self):
calculateA()
def newMethodB(self):
calculateB()
calculateC()
def callerA():
newMethodA()
newMethodB()
def callerAA():
newMethodA()
newMethodB()
步骤 3:重命名方法