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.