首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python重构

Python重构
EN

Stack Overflow用户
提问于 2014-08-22 05:56:23
回答 1查看 383关注 0票数 0

我有一段代码想要重构。基本上有三个函数是复制粘贴的,除了它们的名称X,Y,Z。只有函数名称create?和变量errContext中的字符串发生变化。

代码语言:javascript
复制
class Derived(Base):
    def createX(self):
        try:
            errContext  = "X has fatal errors."
            # .... code .....
        except Exception, e:
            raise w

    def createY(self):
        try:
            errContext  = "Y has fatal errors."
            # .... code .....
        except Exception, e:
            raise w

    def createZ(self):
        try:
            errContext  = "Z has fatal errors."
            # .... code .....
        except Exception, e:
            raise w

我重构它的第一个尝试如下所示:

代码语言:javascript
复制
class Derived(Base):
    def _create(self, name):
        try:
            errContext  = "%s has fatal errors." % (name)
            # .... code .....
        except Exception, e:
            raise w

    def createX(self):
        self._create('X')

    def createY(self):
        self._create('Y')

    def createZ(self):
        self._create('Z')

这是正确的吗?或者,有没有更好的方法来做这件事,比如使用闭包?现在,我使用Clone DiggerCPD进行复制粘贴检测。它们非常有用。

EN

回答 1

Stack Overflow用户

发布于 2014-08-22 06:34:25

如果你想保持向后兼容性,我看起来不错。否则,只需在新类中保留一个create函数即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25436613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档