Python-Entwurfsmuster - Anti
Anti-Patterns folgen einer Strategie im Gegensatz zu vordefinierten Designmustern. Die Strategie umfasst gemeinsame Ansätze für gemeinsame Probleme, die formalisiert werden können und allgemein als gute Entwicklungspraxis angesehen werden können. Normalerweise sind Anti-Muster entgegengesetzt und unerwünscht. Anti-Patterns sind bestimmte Muster, die in der Softwareentwicklung verwendet werden und als schlechte Programmierpraktiken angesehen werden.
Wichtige Merkmale von Anti-Mustern
Lassen Sie uns nun einige wichtige Merkmale von Anti-Mustern sehen.
Richtigkeit
Diese Muster brechen buchstäblich Ihren Code und bringen Sie dazu, falsche Dinge zu tun. Das Folgende ist eine einfache Illustration davon -
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))
Wartbarkeit
Ein Programm gilt als wartbar, wenn es gemäß den Anforderungen leicht zu verstehen und zu ändern ist. Das Importieren eines Moduls kann als Beispiel für die Wartbarkeit angesehen werden.
import math
x = math.ceil(y)
# or
import multiprocessing as mp
pool = mp.pool(8)
Beispiel eines Anti-Musters
Das folgende Beispiel hilft bei der Demonstration von Anti-Mustern -
#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
Erläuterung
Das Beispiel enthält die Demonstration guter und schlechter Standards zum Erstellen einer Funktion in Python.