Original geschrieben von ohio
back to topic, wozu sollte man 'überladungen' nutzen anstatt smartere lösungen in Erwägung zu ziehen? auch wenn es 'üblich' sein sollte ist es deswegen ja nicht mehr oder weniger geeignet.
Wieso mann Überladungen nutzen sollte?
Weil sie logisch sind.
Was soll denn funktionen sein. Eine funktion soll eine Blackbox sein, bei der ich mich nicht um die implementierung kümmern muss.
Daher sind aufrufe mit konstrukten wie
0 en eher hinderlich.
Das endet in unschönen Methoden wie sie oft in der WinAPI oder auch anderen APIs vorkommen
4 Parameter und der 2. und 4. Parameter darf null sein.
das ist keine sinnvolle Implementierung.
Es ist nicht logisch mit Parameter null zu programmieren.
Logischer ist das ich entweder die Methode mit 2 Parameter oder mit 3 oder 4 aufrufe.
Mann sieht es z.b. auch an den php nativen Funktionen, auch hier findet mann zumeist sinnvolle Parameter und intuitive Dinge.
int tuWas(int, String, MyClass);
int tuWas(int, String);
Diese Methode lässt sich alleinig mit der Deklaration beschrieben.
Wenn du das ganze so zusammenfassen willst das MyClass Parameter auch null sein darf, kannst du das schon nicht mehr nur mit der Deklaration beschreiben.
int tuWas(int, String, MyClass);
MyClass can be null
Das ist ein grober Nachteil, da viele IDE's einem die verschiedenen Methoden
Automatisch zur auswahl geben.
Mit einer null Parameter Methode lässt sich dies nicht dokumentieren
Es gibt dazu extra Design Pattern die einem das nahelegen.
http://www.aw.com/catalog/academic/product/0,4096,0201633612,00.html
<- kann ich empfehlen.