Hallo 
Ich kämpfe mal wieder damit herum, wie man in OOP etwas richtig programmiert.
Ich habe folgende Klasse:
Hierin gibt es also die public Methode 'm()'. In dieser Methode stünde ein komplizierter Algorithmus. Um diesen jedoch extra gründlich mittels UnitTests prüfen zu können, ist er in einer eigenen Methode '_algorithmus()' ausgelagert. Diese darf dann nur private sein.
Allerdings kann ich von außen nicht auf eine private Methode zugreifen. Ich kann also keine Unittests durchführen.
Also müsste ich die private Methode entweder public machen oder eine zusätzliche public-Methode definieren, z. B.:
Allerdings finde ich das auch nicht so toll. Gibt es vielleicht noch eine andere Lösung??

Ich kämpfe mal wieder damit herum, wie man in OOP etwas richtig programmiert.

Ich habe folgende Klasse:
PHP-Code:
class X
{
private function _algorithmus()
{
// hier passiert irgendetwas kompliziertes
}
public function m()
{
// irgendwelche Befehle
// dann kommt ein komplizierter Algorithmus:
$this->_algorithmus(); // in einer eigenen Methode ausgelagert
// dann kommen wieder irgendwelche Befehle
}
}
Allerdings kann ich von außen nicht auf eine private Methode zugreifen. Ich kann also keine Unittests durchführen.
Also müsste ich die private Methode entweder public machen oder eine zusätzliche public-Methode definieren, z. B.:
PHP-Code:
class X
{
private function _algorithmus()
{
// hier passiert irgendetwas kompliziertes
}
public function testAlgorithmus() // diese Methode ist dann nur für die Unit-Tests
{
// macht nur eines: es ruft die private Methode _algorithmus auf:
$this->_algorithmus();
}
public function m()
{
// irgendwelche Befehle
// dann kommt ein komplizierter Algorithmus:
$this->_algorithmus();
// dann kommen wieder irgendwelche Befehle
}
}

Kommentar