Я развиваюсь на iPhone с Objective-C в течение нескольких месяцев, и я применяю передовые методы, извлеченные и усовершенствованные при разработке приложений с Java. К ним относятся: проектирование классов с одной ответственностью, применение шаблонов проектирования, где это необходимо, и запись short methods, которые делают только одно. Для меня эти методы полезны с точки зрения clean-code и в значительной степени являются агностиками.Написание чистого кода для iPhone
Я был очень доволен результатами. Тем не менее, некоторые разработчики iPhone самостоятельно посоветовали мне отказаться от этого, поскольку говорят, что я пишу слишком много классов и слишком много методов. В разное время я был предупрежден:
- Стек будет дуть
- Слишком много классов замедлит iPhone вниз (т.е. воспринимаемый пользователем)
- Вложенные вызовы методов повредит производительности (т.е. воспринимаемый пользователь)
На практике я не испытывал этих проблем. Если посмотреть поверхностно на какой-то iPhone performance metrics, мне кажется, что дополнительные вызовы метода и служебные данные жизненного цикла объекта, необходимые для реализации общих шаблонов и коротких методов, вряд ли создадут какую-либо заметную задержку пользователя. Тем не менее, советы других разработчиков iPhone заставили меня немного испугаться.
Я хотел бы продолжить изучение и уточнение методов агностического программирования домена, которые хорошо послужили мне в прошлом, но при разработке на iPhone я не хочу идти по маршруту, который закончится болью!
Так что в отношении этой платформы - следует ли отказаться от некоторых распространенных лучших практик и лучше осознавать оптимизацию вызовов вызова и жизненного цикла объекта? Или я должен продолжать следовать Knuth's совет:
Преждевременная оптимизация является корнем все зло (или по крайней мере большинство из них) в программирования
Мне интересно, можете ли вы показать некоторые примеры своего кода. Я хотел бы посмотреть, как вы используете свой опыт Java в мире Cocoa Touch. У вас есть публичные репозитории на github или что-то похожее на ваши источники ObjC? – Piotr