Moin,
Prinzipiell gilt für sauberen Code: Don't repeat yourself! (DRY).
Wenn zwei Funktionen das gleiche tun, gehören sie zu einer zusammen gefasst.
Dieses Prinzip sollte man jedoch dann verletzen, wenn man auf Biegen und Brechen zwei Dinge zusammenbringt, die eigentlich nichts miteinander zu tun haben (dieses Risiko sähe ich bei Deiner Variante 1). In diesem Fall sollte man den gemeinsamen Teil in eine Funktion auslagern, so dass die einzel-Funktionen nur noch das beinhalten, was unterschiedlich ist (entspricht Deiner 3. Variante).
-> Ich würde tendenziell zu Deiner 3. Variante tendieren.
Falls Du objektorientiert programmierst, kannst Du das ganze auch sehr schlank machen, ohne dass Du Bedenken hinsichtlich zu vieler "Zusatzfunktionen" haben musst:
Beispiel PHP:
public class UserDataPreparer {
var userData;
public __construct ($userData) {
$this->userData = $userData;
}
public processData () {
// Do stuff with userData
}
}
public class UserDataOutputPreparer extends UserDataPreparer {
public processData () {
// Do basic userData Stuff
parent::processData();
// Now do stuff exspecially for output
}
}
Hängt aber natürlich von Deinem Problem, Deiner Implementierung usw. ab, und lässt sich daher sicher nicht allgemeingültig beantworten.
Viele Grüße,
Jörg