Thread Perl OOP
(12 answers)
Opened by sid burn at 2006-09-21 19:24
[quote=sid burn,22.09.2006, 16:43]Zum anderen werde ich nachher kein String oder so abspeichern. "$user->duration" soll mir direkt die Dauer aus der Datenbank auslesen. Und wenn ich es als Setter benutze soll der Eintrag in der Datenbank auch direkt verändert werden.[/quote]
oha. sorry, dass ich schon wieder was einzuwenden habe. bei einem normalen getter ein select auf die datenbank zu machen kann je nach anwendung *sehr* ineffizient sein. gerade gestern erlebt. eine klasse bei uns hat eine methode, die eine reihe von strings zurückliefert. diese sind keine direkten attribute. beim aufruf dieser methode wird ein select auf die datenbank gemacht. bis vor kurzen lieferte die methode aber ein direktes attribut. nun gibt es eine anwendung, die einen export macht und sich, sagen wir, 100.000 objekte aus der db holt. für jedes objekt holt sich der export nun noch über die genannte methode die strings. das sind 100.000 selects extra. der export läuft jetzt doppelt so lange wie vorher. nicht gut. dasselbe gilt für store. ich würde lieber eine methode store implementieren und nicht implizit beim aufruf des setters auf die datenbank gehen. kann dann auch störend sein, wenn du das mal nicht haben willst. vielleicht solltest du ![]() kann man dann auch angeben, welche attribute immer gleich mit dem ersten select geholt werden sollen und welche nicht. Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: ![]() ![]() |