Ähmh... Kam hier entlang mit genau dem gleichen Problem: Test a einfach , aber entscheidend privat Methode. Nach der Lektüre dieses Threads scheint es so zu sein: "Ich möchte dieses einfache Loch in dieses einfache Stück Metall bohren, und ich möchte sicherstellen, dass die Qualität den Spezifikationen entspricht", und dann kommt "Okay, das ist nicht so einfach. Zunächst einmal gibt es kein geeignetes Werkzeug dafür, aber man könnte ein Gravitationswellenobservatorium in seinem Garten bauen. Lesen Sie meinen Artikel unter http://foobar.brigther-than-einstein.org/ Zuerst muss man natürlich einige Kurse für fortgeschrittene Quantenphysik besuchen, dann braucht man tonnenweise ultrakaltes Nitrogenium, und dann natürlich mein Buch, das bei Amazon erhältlich ist"...
Mit anderen Worten...
Nein, das Wichtigste zuerst.
Jede einzelne Methode, sei sie privat, intern, geschützt, öffentlich hat testbar sein. Es muss eine Möglichkeit geben, solche Tests ohne solche Umstände durchzuführen, wie sie hier vorgestellt wurden.
Warum? Genau denn der architektonischen Erwähnungen, die bisher von einigen Mitwirkenden gemacht wurden. Vielleicht kann eine einfache Wiederholung der Softwareprinzipien einige Missverständnisse ausräumen.
In diesem Fall handelt es sich um die üblichen Verdächtigen: OCP, SRP und, wie immer, KIS.
Aber warten Sie einen Moment. Die Idee, alles öffentlich zugänglich zu machen, ist mehr oder weniger politisch und eine Art von Einstellung. Aber. Wenn es um Code geht, auch in der Open-Source-Gemeinschaft, ist das kein Dogma. Stattdessen ist es eine gute Praxis, etwas zu "verstecken", um es einfacher zu machen, sich mit einer bestimmten API vertraut zu machen. Sie würden zum Beispiel die Kernberechnungen Ihres neu auf dem Markt befindlichen digitalen Thermometer-Bausteins verstecken - nicht um die Mathematik hinter der tatsächlichen Messkurve vor neugierigen Code-Lesern zu verbergen, sondern um zu verhindern, dass Ihr Code von einigen, vielleicht plötzlich wichtigen Nutzern abhängig wird, die nicht widerstehen können, Ihren ehemals privaten, internen, geschützten Code zu verwenden, um ihre eigenen Ideen umzusetzen.
Wovon rede ich eigentlich?
private double TranslateMeasurementIntoLinear(double actualMeasurement);
Es ist leicht, das Zeitalter des Wassermanns auszurufen, aber wenn mein Sensor von 1.0 auf 2.0 wechselt, könnte sich die Implementierung von Translate... von einer einfachen linearen Gleichung, die für jeden leicht verständlich und "wiederverwendbar" ist, zu einer ziemlich ausgeklügelten Berechnung ändern, die Analyse oder was auch immer verwendet, und so würde ich den Code anderer kaputt machen. Und warum? Weil sie die Grundprinzipien der Software-Programmierung nicht verstanden haben, nicht einmal KIS.
Um dieses Märchen kurz zu machen: Wir brauchen eine einfach eine Möglichkeit, private Methoden zu testen - ohne Umschweife.
Erstens: Frohes neues Jahr an alle!
Zweitens: Üben Sie Ihren Architektenunterricht.
Drittens: Der Modifikator "öffentlich" ist Religion, keine Lösung.