Faustregel für funktion werden methoden?
-
hallo
habt ihr eine faustregel dafür, wann eine funktion eher eine methode einer klasse sein soll? ich mache das so, dass sobald eine funktion zugriff auf klassen elemente hat, sie gleich die methode dieser klasse wird, oder sobald eine funktion (logischerweise) von anderen objekten benutzt wird. gibt es eine faustregel für sowas? wann sollte eine funktion eine methode sein?
-
Wenn's nicht anders geht war IMO die Aussage von Herb Sutter (Exceptional C++)
-
eine klasse sollte einen möglichst großen zusammenhalt haben
Cohesion (computer science): a measure of how well the lines of source code within a module work together to provide a specific piece of functionality.
überhaupt gilt dass für jedes modul (= klasse / methode)
wenn also eine methode logisch zu einer klasse dazugehört sollte man sie dazupacken, dabei muss man sich natürlich vorher exakt im klaren darüber sein was deine klasse ist und was sie nicht ist
meistens, wenn du die klasse richtig "designed" hast - dir einfach überlegt hast was deine klasse darstellen soll - stellt sich diese frage eigentlich nicht, ,denn man weiss einfach welche public methoden sie zur verfügung stellen muss um verwendet werden zu können und die private methoden ergeben sich dann daraus
sachen wie "utility methoden" (die nur indirekt oder garnicht auf die klasse selbst bezogen sind sondern einfach funktionalität bereitstellen die die klasse eventuell braucht) - solche die beispielsweise das durchschnittseinkommen von x mitarbeitern berechnet (sowas gehört eher nicht in die mitarbeiter klasse) kannst du dann zb in eine all-static klasse packen oder dir überlegen was du damit anstellst
aber meistens gibt es dafür eh schon eh klassen wie matrizen, linkedlists, strings etc etc
wenn du an einem punkt ist wo du dir nicht sicher bist ob du eine methode in die klasse oder nicht tun solltest könnte es auch ein anzeichen dafür sein dass du deine klasse falsch designed hast und sie eine schlechte cohesion hat - zb 2 funktionalitäten abdekt so wie ein... ka 4D vektor der gleichzeitig versucht ein quaternion zu sein
-
Vevusio schrieb:
...
