反模式


反模式遵循與預定義的設計模式相反的策略。 該策略包含共同問題的常見方法,可以將其形式化,並且可以被普遍視為一種良好的開發實踐。 通常情況下,反模式是相反的並且是不可取的。 反模式是軟體開發中使用的某些模式,被認為是不好的程式設計實踐。

反模式的重要特徵

現在我們來看看反模式的一些重要特徵。

正確性

這些模式從字面上破壞程式碼,並讓你做錯事。 以下是對此的簡單說明 -

class Rectangle(object):
    def __init__(self, width, height):
    self._width = width
    self._height = height
r = Rectangle(5, 6)
# direct access of protected member
print("Width: {:d}".format(r._width))

可維護性

如果程式易於理解和根據要求進行修改,則稱該程式是可維護的。 匯入模組可以被認為是可維護性的一個例子。

import math
x = math.ceil(y)
# or
import multiprocessing as mp
pool = mp.pool(8)

反模式範例

以下範例演示如何實現反模式 -

#Bad
def filter_for_foo(l):
   r = [e for e in l if e.find("foo") != -1]
   if not check_some_critical_condition(r):
      return None
   return r

res = filter_for_foo(["bar","foo","faz"])

if res is not None:
   #continue processing
   pass

#Good
def filter_for_foo(l):
   r = [e for e in l if e.find("foo") != -1]
   if not check_some_critical_condition(r):
      raise SomeException("critical condition unmet!")
   return r

try:
   res = filter_for_foo(["bar","foo","faz"])
   #continue processing

except SomeException:
   i = 0
while i < 10:
   do_something()
   #we forget to increment i

說明
這個例子包括了在Python中建立函式的好的和壞的標準的演示。