反模式遵循與預定義的設計模式相反的策略。 該策略包含共同問題的常見方法,可以將其形式化,並且可以被普遍視為一種良好的開發實踐。 通常情況下,反模式是相反的並且是不可取的。 反模式是軟體開發中使用的某些模式,被認為是不好的程式設計實踐。
現在我們來看看反模式的一些重要特徵。
正確性
這些模式從字面上破壞程式碼,並讓你做錯事。 以下是對此的簡單說明 -
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中建立函式的好的和壞的標準的演示。