Seit einigen Monaten entwickle ich mit Objective-C für das iPhone und wende dabei die Best Practices an, die ich bei der Entwicklung von Anwendungen mit Java gelernt und verfeinert habe. Dazu gehören: das Entwerfen von Klassen, die eine einzige Verantwortung haben, die Anwendung von Entwurfsmustern, wo es angebracht ist, und das Schreiben von Kurzmethoden die nur eine Sache tun. Für mich sind diese Praktiken sowohl aus einer sauberer Code und sind weitgehend bereichsunabhängig.
Ich bin mit den Ergebnissen sehr zufrieden. Allerdings haben mir einige iPhone-Entwickler unabhängig voneinander davon abgeraten, da ich ihrer Meinung nach zu viele Klassen und zu viele Methoden schreibe. Zu verschiedenen Zeiten wurde ich gewarnt:
- Der Stapel wird explodieren
- Zu viele Klassen verlangsamen das iPhone (d.h. sind für den Benutzer spürbar)
- Verschachtelte Methodenaufrufe beeinträchtigen die Leistung (d.h. sie sind für den Benutzer spürbar)
In der Praxis habe ich diese Probleme nicht erlebt. Bei oberflächlicher Betrachtung einiger iPhone-Leistungskennzahlen Es scheint mir, dass die zusätzlichen Methodenaufrufe und der Mehraufwand für den Lebenszyklus von Objekten, die für die Implementierung allgemeiner Muster und kurzer Methoden erforderlich sind, kaum zu einer für den Benutzer spürbaren Verzögerung führen werden. Die Ratschläge anderer iPhone-Entwickler haben mich jedoch ein wenig erschreckt.
Ich möchte die domänenunabhängigen Programmierpraktiken, die mir in der Vergangenheit gute Dienste geleistet haben, weiter erlernen und verfeinern, aber bei der Entwicklung auf dem iPhone möchte ich nicht einen Weg einschlagen, der mit Schmerzen endet!
Also im Hinblick auf diese Plattform - sollte ich einige gemeinsame Best-Practices aufgeben und bewusster sein der Optimierung von Methodenaufruf und Objekt-Lebenszyklus-Overheads? Oder sollte ich weiterhin folgen Knuths Ratschläge:
Vorzeitige Optimierung ist die Wurzel von allen Übels (oder zumindest des größten Teils davon) in der Programmierung
0 Stimmen
Ich frage mich, ob Sie einige Beispiele für Ihren Code zeigen könnten. Ich würde gerne sehen, wie Sie Ihre Java-Erfahrung in der Cocoa Touch-Welt nutzen. Haben Sie irgendwelche öffentlichen Repositories auf Github oder etwas Ähnliches mit Ihren ObjC-Quellen?