Python Design Patterns - Anti

Os antipadrões seguem uma estratégia em oposição aos padrões de projeto predefinidos. A estratégia inclui abordagens comuns para problemas comuns, que podem ser formalizados e geralmente considerados como uma boa prática de desenvolvimento. Normalmente, os antipadrões são opostos e indesejáveis. Antipadrões são certos padrões usados ​​no desenvolvimento de software, que são considerados práticas de programação ruins.

Características importantes de anti-padrões

Vamos agora ver alguns recursos importantes dos antipadrões.

Exatidão

Esses padrões literalmente quebram seu código e fazem você fazer coisas erradas. A seguir está uma ilustração simples disso -

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

Capacidade de Manutenção

Um programa pode ser mantido se for fácil de entender e modificar de acordo com os requisitos. O módulo de importação pode ser considerado um exemplo de sustentabilidade.

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

Exemplo de anti-padrão

O exemplo a seguir ajuda na demonstração de anti-padrões -

#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

Explicação

O exemplo inclui a demonstração de padrões bons e ruins para a criação de uma função em Python.