Patrones de diseño de Python - Anti

Los anti-patrones siguen una estrategia en oposición a los patrones de diseño predefinidos. La estrategia incluye enfoques comunes para problemas comunes, que pueden formalizarse y, en general, pueden considerarse como una buena práctica de desarrollo. Generalmente, los anti-patrones son opuestos e indeseables. Los anti-patrones son ciertos patrones utilizados en el desarrollo de software, que se consideran malas prácticas de programación.

Características importantes de los anti-patrones

Veamos ahora algunas características importantes de los anti-patrones.

Exactitud

Estos patrones literalmente rompen tu código y te hacen hacer cosas incorrectas. A continuación se muestra una ilustración simple de esto:

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

Mantenibilidad

Se dice que un programa se puede mantener si es fácil de entender y modificar según el requisito. La importación de módulos se puede considerar como un ejemplo de mantenibilidad.

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

Ejemplo de anti-patrón

El siguiente ejemplo ayuda en la demostración de anti-patrones:

#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

Explicación

El ejemplo incluye la demostración de estándares buenos y malos para crear una función en Python.