пятница, 28 марта 2014 г.

Семь привычек высокоэффективного Objective-C


[Перевод] Семь привычек высокоэффективного Objective-C


Это вольный перевод статьи "Seven Habits of Highly Effective Objective-C" от Ash Furrow

В этой статье мы рассмотрим несколько эффективных привычек, которые помогут вам стать более продуктивным разработчиком. Эти советы я собрал из своего личного опыта, есть и другие, многие другие советы (я буду говорить о семи). Итак, давайте начнем. 

1. Используйте #pragma
Директива препроцессора #pragma является полезным инструментом для организации кода и для других интересных вещей. Я использую дерективу #pragma в первую очередь для объединения методов внутри класса в группы. Для примера:

#pragma mark - UICollectionViewDataSource & UICollectionViewDelegate Methods
//Методы делегата и данных
#pragma mark - Private Custom Methods
//Приватные методы

Когда я открываю выпадающий список для файла, на панели быстрого перехода, мои методы будут сгруппированы с добавлением заголовков. Дефис в начале метки добавляет горизонтальную строку в выпадающем списке


2. Используйте Core Data
Я колебался включать этот совет или нет и делаю это с оговоркой: используйте Core Data обдумано. Например, если нет необходимости в сохранении данных между запусками приложения или вам необходим полный контроль над структурой генерируемого SQL, то Core Data вам не подходит.

Core Data не является объектно-реляционной моделью. Фактически это просто менеджер графа объектов, у которого есть бэкэнд — SQLite.

Различие тонкое, но важное. Core Data полезна, если у вас слишком много объектов, чтобы сразу их разместить в памяти — это запросто может произойти на iPhone. Core Data может сохранять объекты в базе данных SQLite, plist или бинарном файл. Core Data также обеспечивает высоко-уровневый интерфейс запросов для извлечения объектов из графа.

Это очень полезный инструмент, который убережет вас от написания большого количества кода для управления памятью, кэшем и доступом к диску. Если вы будете использовать NSKeyedArchiver c NSUserDefaults или сохранять все в Plist, то вы должны рассмотреть возможность использования Core Data вместо этого.

У Core Data крутая кривая обучения, но как только вы освоите основы, это поможет вам сконцентрироваться на коде, который делает ваши приложения уникальными.

3. Пишите самодокументируемый код
Это может показаться очевидным, но тут есть некоторые тонкости. Очевидно, что имена переменных должны быть описательными (чтобы можно было понять назначение переменных). Другая практика самодокументируемого кода — использование Objective-C синтаксиса передачи сообщений. Для примера, следующие объявление метода вполне допустимо:

-(void)doSomethingWithInt:(int)anInt :(float)aFloat;

Этот метод вы вызвали бы так:

[obj doSomethingWithInt:13 :0.5f];

Но не будет ли больше смысла, если метод будет вызываться так?

[obj doSomethingWithInt:13 float:0.5f];

Теперь вы знаете больше о методе, потому что он был назван правильно. Я никогда не думал, что это проблема, пока не погрузился в некоторых проекты с открытым кодом. Я не буду называть эти проекты здесь. Это простой способ сделать ваш код более ясным, и другие будут благодарны вам за это.

Конечно, это не означает, что комментарии не важны. Я обнаружил, что комментарии к коду являются очень полезны для объяснения, почему часть кода делает что-то так, а не иначе. В любом случае, обе практики хороши.

4. Используйте иерархии View Controller
Иерархии View Controller были впервые введены в iOS 5. Они позволяют разработчикам разделить иерархии представлений на логические блоки, управляемые соответствующими контролерами представлений.

Когда вы отделяете логику управления иерархией подвидов (sub view) в отдельный View Controller, вы мгновенно делаете код пригодным для повторного использования. Это также позволяет сохранять небольшие файлы (следующий пункт).

Иерархии View Controller супер полезны и имеют много смысла. Я очень рекомендовал бы видео с WWDC 2011 года, где обсуждают их использование.

5. Храните небольшие файлы
Я обнаружил, что мне нравится иметь небольшие классы. Я думаю, что есть два типа больших классов: либо вы копируете и вставляете реализацию других классов и новый класс немедленно раздувается, либо класс накапливает все больше и больше логики с течением времени.

Рефакторинг кода в пользу категорий или расширений классов является отличным способом для минимизации повторяющегося кода. Перенос части кода в категории или расширения класса может помочь заставить вас хранить код раздельно, что позволяет его легко тестировать и рефакторить.

Сохраняя файлы небольшими, вы изначально ограничиваете количество логики содержащийся в каждом из них. Это гарантирует, что каждый класс выполняет только то, что от него требуется, это очень важно для поддержания кода. Это добавляет некоторые накладные расходы с точки зрения количества классов и количества пересылаемых между ними сообщений, но эти накладные расходы будут с лихвой компенсированы.

6. Изучите сочетания клавиш Xcode
Это общее правило использования компьютера: если часто выполняете одни и те же задачи мышью, то вместо этого попытайтесь выучить сочетания клавиш.

XCode изобилует ими. Левая панель поделена на области (список файлов, поиск, и др.), эти области могут быть показаны с помощью сочетания ⌘+X, где X — индекс области. Для примера, список файлов это первая область, так сочетание ⌘+1 показывает список файлов. ⌘+0 полностью скрывает левую панель.

Области на панели утилит с правой стороны, могут быть открыты и закрыты тем же сочетаниями с добавлением ⌥. Так, для открытия инспектора файлов, нажмите ⌘+⎇+1

Эти два набора сочетаний позволили мне добиться продуктивного, рабочего процесса.

Их много, очень много, но я думаю, что лучший способ изучать сочетания клавиш — это начать выполнять задачу, а затем выяснить как можно ускорить выполнение.

(Одно из моих любимых сочетаний — «Быстрое открытие» ⌘⇧-O. Это откроет приглашение для ввода, куда вы можете ввести строку поиска по файлам проекта и библиотекам. При поиске используется нечеткого соответствия, вы можете пропустить буквы в имени файла. Это просто фантастика для открытия заголовочных файлов!))

7. Практикуйте целеустремленность
Одной только практики не достаточно, вы должны быть целеустремленными в собственном развитии.

Это звучит глупо, я знаю. Я хочу сказать, что если вы хотите стать хорошим, действительно хорошим разработчиком, то вы должны себе внушать это.

Если вам нравится Objective-C, то вы должны читать других разработчиков в твиттере, читать Objective-C блоги. Найдите возможность учиться и вы станете лучшим разработчиком. Я знаю это.

Комментариев нет:

Отправить комментарий