Die folgenden Probleme werden reduziert und die Debugging-Effizienz verbessert.
"Diese Flagge sollte wahr sein, aber sie ist falsch!" "Ich weiß nicht, wo die Ursache des Fehlers liegt." "Wenn Sie das Problem beheben, liegt möglicherweise irgendwo wieder ein Problem vor."
Entwerfen Sie die folgenden beiden Funktionen genau getrennt und vergrößern Sie den reinen Bereich, um den verschmutzten Bereich zu verringern.
Eine Funktion, die immer dasselbe Ergebnis für dasselbe Argument zurückgibt und den Bereich außerhalb der Funktion nicht beeinflusst.
Eine Funktion, die unterschiedliche Ergebnisse mit demselben Argument zurückgibt oder den Bereich außerhalb der Funktion beeinflusst
Das Folgende ist ein Beispiel. Es spielt keine Rolle, ob Sie einfach und klar zwischen reinen und schmutzigen Dingen wie dem Trennen von Paketen und Dateien oder durch Benennen unterscheiden können, und ob Sie den reinen Bereich relativ dick machen können.
class Pure:
"""
Eine Klasse reiner Funktionen
Mach das fett
"""
def plus(self,a,b):
return a + b
def minus(self,a,b):
return a - b
class Dirty:
"""
Gruppierte Klasse für schmutzige Funktionen
=Eine Klasse mit einer Funktion, die den Status ändert
Reduzieren Sie dies
"""
def __init__(self):
self.my_number = 0
def plus(self,a):
self.my_number = self.my_number + a
return self.my_number
def minus(self,b):
self.my_number = self.my_number - 1
return self.my_number
Es gibt vier Gründe.
Eine Sprache, die einfach funktional zu programmieren ist. Es eignet sich zum Schreiben mit reichlich vorhandenen Sprachen, die Funktionen handhaben, oder mit reinen Funktionen. Die funktionale Programmierung selbst kann VB oder was auch immer sein.
Das Gemeinsamste ist, die Auswirkungen eines Bereichs auf einen anderen zu minimieren. Die Objektorientierung versucht dies durch Einkapselung, Polymorphismus und Vererbung zu erreichen. Die funktionale Programmierung versucht, eine reine Funktion wie die oben beschriebene zu mästen, um das Problem von Zustandsänderungen zu minimieren.
Das Folgende kann in einer sehr persönlichen Sichtweise voreingenommen sein Beides sind keine widersprüchlichen Konzepte, sondern Koexistenzkonzepte, aber die Objektorientierung erfolgt üblicherweise unter der Voraussetzung, den Zustand vieler Objekte zu ändern, so dass der oben genannte Zweck "ein bestimmter Bereich" ist. Es ist schwierig, die Auswirkungen von Auswirkungen auf andere Bereiche zu minimieren. Ich bin auch der Meinung, dass die Objektorientierung im Vergleich zur funktionalen Programmierung weniger wahrscheinlich zu Ergebnissen führt als Lern- und Designkosten. Unter Berücksichtigung des Kompromisses mit der Zeit mache ich eine bestimmte Klassifizierung, aber ich achte nur auf Pure oder Dirty.
Das Herzstück der funktionalen Programmierung ist die Mast des reinen Bereichs. Funktionale Programmierung ist eine köstliche und vielseitige Technologie, die aufgrund ihrer geringen Lernkosten sehr effektiv ist.
Recommended Posts