究竟是什么'代码重复'

时间:2017-03-31 14:16:48

标签: python python-3.x

我从书(从新手到专业开始的Python)中读到“重复代码通常被认为是一件坏事”(我不是母语,所以我不确定它是如何写的最初) ,并说:

#===11-7===
file = open(PATH)
while True:
    char = file.read(1)
    if not char: 
        break
    print('Processing:', char)
file.close()

优于:

#===11-6===
file = open(PATH)
char = file.read(1)
    while char:
        print('Processing:', char)
        char = file.read(1)
file.close()

因为11-7避免了代码重复。所以我在这里问:什么是代码重复?它是如此糟糕?

仅仅判断形式11-6我没有看到某种......缺点,说实话,如果我没有看过这本书,我会按照11-6这样的代码。感谢〜

1 个答案:

答案 0 :(得分:3)

第二个例子确实在两个地方进行了读操作。所以 -

想象一下,您编写了此代码,并且在将来的某个时刻,您将更改您阅读数据的方式;也许现在你想通过网络而不是从文件中读取它,或者你想使用不同的函数来读取文件。在第一个例子中,你只需要在一个地方改变“file.read(1)”,而在第二个例子中,你必须在两个地方改变它,你可能会错过其中一个,或者犯错误等等。

同样,您可能会发现代码中存在错误,并且偶然只会在两个位置之一中修复它。

现在这显然是一个简单的例子,它并不重要,但在实际程序中,这样的错误很容易实现:想象它不是一行而是50行重复代码,以及有人在一个副本中修复了一个错误而在另一个副本中没有。您现在遇到了一个可能很难调试的问题!