Hi
Mal wieder eine eher philosophische Frage: Nach welchen Kriterien sollte man entscheiden, ob man eine Methode als "richtige" (Member-) Methode einer Klasse anbietet, oder als statische Utility-Methode?
Einige Sachen sind klar: Wenn die Methode irgendwas mit privaten Members macht, hat man nicht so viele Möglichkeiten: Es ist eine Membermethode. Wenn die Methode 2 Parameter übergeben bekommt, die Typen haben, die einander nicht kennen sollten (man also nicht ohne weiteres die Methode in einen der beiden Typen packen möchte) ist die Entscheidung auch klar: Es ist eine statische Utility-Methode.
In den ALLERmeisten Fällen könnte man sagen, dass man mit etwas Erfahrung "instinktiv das richtige macht", oder "diese Entscheidung im Gefühl hat". Aber mir ist das ein bißchen zu dünn. Gibt es irgendwelche "harten", formalen Kriterien oder Regeln, nach denen man das entscheiden kann?
Der Anlass für diese Frage ist, dass ich jetzt schon ein paar mal
someList.shuffl...
eingetippt habe... : Ach nee, das ist ja Collections.shuffle(List)! Konkrete Beispiele erweisen sich zwar für solche philosophischen Prinzipfragen häufig als schädlich, aber ich versuch's mal, in der Hoffnung, dass sich keiner zuuu sehr dran aufhängt: Warum ist zum Beispiel "shuffle" keine Methode von "List"?
Mal wieder eine eher philosophische Frage: Nach welchen Kriterien sollte man entscheiden, ob man eine Methode als "richtige" (Member-) Methode einer Klasse anbietet, oder als statische Utility-Methode?
Einige Sachen sind klar: Wenn die Methode irgendwas mit privaten Members macht, hat man nicht so viele Möglichkeiten: Es ist eine Membermethode. Wenn die Methode 2 Parameter übergeben bekommt, die Typen haben, die einander nicht kennen sollten (man also nicht ohne weiteres die Methode in einen der beiden Typen packen möchte) ist die Entscheidung auch klar: Es ist eine statische Utility-Methode.
In den ALLERmeisten Fällen könnte man sagen, dass man mit etwas Erfahrung "instinktiv das richtige macht", oder "diese Entscheidung im Gefühl hat". Aber mir ist das ein bißchen zu dünn. Gibt es irgendwelche "harten", formalen Kriterien oder Regeln, nach denen man das entscheiden kann?
Der Anlass für diese Frage ist, dass ich jetzt schon ein paar mal
someList.shuffl...
eingetippt habe... : Ach nee, das ist ja Collections.shuffle(List)! Konkrete Beispiele erweisen sich zwar für solche philosophischen Prinzipfragen häufig als schädlich, aber ich versuch's mal, in der Hoffnung, dass sich keiner zuuu sehr dran aufhängt: Warum ist zum Beispiel "shuffle" keine Methode von "List"?