Angenommen, ich habe eine Funktion IsAdmin
, die überprüft, ob ein Benutzer ein Administrator ist. Nehmen wir auch an, dass die Administratorüberprüfung durchgeführt wird, indem Benutzer-ID, Name und Kennwort mit einer Regel abgeglichen werden (nicht wichtig).
In meinem Kopf gibt es dann zwei mögliche Funktionssignaturen dafür:
public bool IsAdmin(User user);
public bool IsAdmin(int id, string name, string password);
Am häufigsten greife ich zur zweiten Art der Unterschrift und denke, dass:
- Die Funktionssignatur gibt dem Leser viel mehr Informationen
- Die in der Funktion enthaltene Logik muss nichts über die
User
Klasse wissen - Es führt normalerweise zu etwas weniger Code in der Funktion
Allerdings stelle ich diesen Ansatz manchmal in Frage und stelle auch fest, dass er irgendwann unhandlich wird. Wenn zum Beispiel eine Funktion zwischen zehn verschiedenen Objektfeldern in einen resultierenden Bool abbilden würde, würde ich natürlich das gesamte Objekt einschicken. Aber abgesehen von einem so krassen Beispiel sehe ich keinen Grund, das eigentliche Objekt weiterzugeben.
Ich würde mich über Argumente für beide Stile sowie über allgemeine Beobachtungen freuen, die Sie anbieten könnten.
Ich programmiere sowohl in objektorientierten als auch in funktionalen Stilen, daher sollte die Frage in Bezug auf alle Redewendungen gesehen werden.