Kontext:
Ich arbeite derzeit an einem kleinen Projekt in Python. Normalerweise strukturiere ich meine Klassen mit einigen öffentlichen Methoden, die dokumentiert sind, sich aber hauptsächlich mit den Konzepten auf hoher Ebene (was ein Benutzer der Klasse wissen und verwenden sollte) und einer Reihe versteckter (beginnend mit Unterstrich) Methoden befassen, die für die zuständig sind komplexe oder Low-Level-Verarbeitung.
Ich weiß, dass Tests wichtig sind, um Vertrauen in den Code zu schaffen und um sicherzustellen, dass spätere Änderungen das vorherige Verhalten nicht verletzt haben.
Problem:
Um die übergeordneten öffentlichen Methoden auf einer vertrauenswürdigen Basis aufzubauen, teste ich im Allgemeinen die privaten Methoden. Ich finde es einfacher zu finden, ob und wo eine Codeänderung Regressionen eingeführt hat. Dies bedeutet, dass diese internen Tests bei geringfügigen Änderungen brechen können und repariert / ersetzt werden müssen
Ich weiß aber auch, dass Unit-Testing-Private-Methoden zumindest ein umstrittenes Konzept sind oder häufiger als schlechte Praxis angesehen werden. Der Grund ist: Nur öffentliches Verhalten sollte getestet werden ( Ref. )
Frage:
Ich kümmere mich um die folgenden Best Practices und möchte verstehen:
- Warum ist die Verwendung von Unit-Tests für private / versteckte Methoden schlecht (was ist das Risiko)?
- Was sind die Best Practices, wenn die öffentlichen Methoden eine einfache und / oder komplexe Verarbeitung verwenden können?
Präzision:
- es ist nicht ein , wie man Frage. Python hat kein echtes Konzept der Privatsphäre und versteckte Methoden werden einfach nicht aufgelistet, können aber verwendet werden, wenn Sie ihren Namen kennen
- Ich habe noch nie Programmierregeln und -muster gelernt: Meine letzten Kurse stammen aus den 80ern ... Ich habe hauptsächlich Sprachen durch Ausprobieren und Referenzen im Internet gelernt (Stack Exchange ist seit Jahren mein Favorit).