Modelli di design Python - Anti

Gli anti-pattern seguono una strategia in opposizione ai modelli di design predefiniti. La strategia include approcci comuni a problemi comuni, che possono essere formalizzati e possono essere generalmente considerati come una buona pratica di sviluppo. Di solito, gli anti-pattern sono opposti e indesiderabili. Gli anti-pattern sono determinati modelli utilizzati nello sviluppo del software, che sono considerati cattive pratiche di programmazione.

Caratteristiche importanti degli anti-pattern

Vediamo ora alcune importanti caratteristiche degli anti-modelli.

Correttezza

Questi schemi rompono letteralmente il codice e ti fanno fare cose sbagliate. Di seguito è riportato un semplice esempio di questo:

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

Manutenibilità

Si dice che un programma sia mantenibile se è facile da capire e modificare secondo il requisito. L'importazione del modulo può essere considerata un esempio di manutenibilità.

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

Esempio di anti-pattern

L'esempio seguente aiuta nella dimostrazione di anti-pattern -

#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

Spiegazione

L'esempio include la dimostrazione di standard buoni e cattivi per la creazione di una funzione in Python.