Pracuję nad iPhone'em z Objective-C od kilku miesięcy i stosuję najlepsze praktyki wyuczone i dopracowane przy tworzeniu aplikacji z Javą. Należą do nich: projektowanie klas, które mają jedną odpowiedzialność, stosowanie wzorców projektowych w stosownych przypadkach i pisanie short methods, które wykonują tylko jedną rzecz. Dla mnie te praktyki są zarówno korzystne z perspektywy clean-code i są w dużej mierze agnostyczne domeny.Pisanie czystego, wydajnego kodu dla iPhone'a
Jestem bardzo zadowolony z wyników. Jednak kilku programistów iPhone'a osobiście mi doradziło, ponieważ mówią, że piszę za dużo klas i za dużo metod. W różnych okresach Zostałem ostrzeżony:
- Stos powalą
- Zbyt wiele klas spowolni iPhone w dół (czyli wyczuwalny przez użytkownika)
- zagnieżdżone wywołania metod zaszkodzi wydajności (czyli wyczuwalny przez użytkownik)
W praktyce nie doświadczyłem tych problemów. Patrząc powierzchownie na jakieś iPhone performance metrics wydaje mi się, że dodatkowe wywołania metod i obciążenie związane z cyklem życia obiektu wymagane do wdrożenia typowych wzorców i krótkich metod raczej nie spowodują zauważalnego opóźnienia użytkownika. Jednak porady innych programistów iPhone'a mnie trochę wystraszyły.
Chciałbym kontynuować naukę i udoskonalić praktyki programowania agnostycznego w dziedzinie domeny, które dobrze mi służyły w przeszłości, ale podczas pracy nad iPhonem nie chcę wyruszyć w trasę, która zakończy się bólem!
Czy w związku z tą platformą należy zrezygnować ze wspólnych najlepszych praktyk i mieć większą świadomość optymalizacji kosztów ogólnych związanych z wezwaniami i obiektami? Czy mam kontynuować po Knuth's rada:
Przedwczesna optymalizacja jest korzeniem całe zło (a przynajmniej większość z nich) w programowania
Zastanawiam się, czy mógłbyś pokazać kilka przykładów kodu. Chciałbym zobaczyć, w jaki sposób korzystasz ze środowiska Java w świecie Cocoa Touch. Czy masz jakieś publiczne repozytorium na github lub coś podobnego z twoimi źródłami ObjC? – Piotr