鍍金池/ 教程/ Python/ 反模式
反模式
隊(duì)列
適配器設(shè)計(jì)模式
享元設(shè)計(jì)模式
Python設(shè)計(jì)模式
工廠模式
模板設(shè)計(jì)模式
構(gòu)建器(Builder)設(shè)計(jì)模式
Python設(shè)計(jì)模式概要
命令設(shè)計(jì)模式
Python設(shè)計(jì)模式簡(jiǎn)介
觀察者設(shè)計(jì)模式
代理設(shè)計(jì)模式
異常處理
責(zé)任鏈設(shè)計(jì)模式
字典實(shí)現(xiàn)
抽象工廠設(shè)計(jì)模式
Python并發(fā)(多線程)
策略設(shè)計(jì)模式
門面(Facade)設(shè)計(jì)模式
原型設(shè)計(jì)模式
迭代器設(shè)計(jì)模式
集合
單例模式
列表數(shù)據(jù)結(jié)構(gòu)
狀態(tài)設(shè)計(jì)模式
模型視圖控制器(MVC)模式
裝飾器設(shè)計(jì)模式
面向?qū)ο蟾拍畹膶?shí)現(xiàn)
面向?qū)ο笤O(shè)計(jì)模式
字符串和序列化

反模式

反模式遵循與預(yù)定義的設(shè)計(jì)模式相反的策略。 該策略包含共同問(wèn)題的常見方法,可以將其形式化,并且可以被普遍視為一種良好的開發(fā)實(shí)踐。 通常情況下,反模式是相反的并且是不可取的。 反模式是軟件開發(fā)中使用的某些模式,被認(rèn)為是不好的編程實(shí)踐。

反模式的重要特征

現(xiàn)在我們來(lái)看看反模式的一些重要特征。

正確性

這些模式從字面上破壞代碼,并讓你做錯(cuò)事。 以下是對(duì)此的簡(jiǎn)單說(shuō)明 -

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))

可維護(hù)性

如果程序易于理解和根據(jù)要求進(jìn)行修改,則稱該程序是可維護(hù)的。 導(dǎo)入模塊可以被認(rèn)為是可維護(hù)性的一個(gè)例子。

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

反模式示例

以下示例演示如何實(shí)現(xiàn)反模式 -

#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

說(shuō)明
這個(gè)例子包括了在Python中創(chuàng)建函數(shù)的好的和壞的標(biāo)準(zhǔn)的演示。