Я вижу много кода objective-c, который просто # определяет локальные константы, в которых он нуждается, и затем продолжает свой веселый путь. Проблема в том, что, насколько я знаю, #defines не ограничены. Многие из них находятся в собственном примере кода Apple. Например, в примере TableViewSuite функция drawRect в TimeZoneView.m содержит следующий блок:
#define LEFT_COLUMN_OFFSET 10
#define LEFT_COLUMN_WIDTH 130
#define MIDDLE_COLUMN_OFFSET 140
#define MIDDLE_COLUMN_WIDTH 110
#define RIGHT_COLUMN_OFFSET 270
#define UPPER_ROW_TOP 8
#define LOWER_ROW_TOP 34
#define MAIN_FONT_SIZE 18
#define MIN_MAIN_FONT_SIZE 16
#define SECONDARY_FONT_SIZE 12
#define MIN_SECONDARY_FONT_SIZE 10
Есть ли какая-то причина, по которой я не понимаю, что это не абсурдно опасно? Как минимум, не должны ли мы указывать эти константы в конце функции?
Что мой вопрос, я полагаю:
Лучше ли вам определять, что вам нужно в файле, который вам нужен, и не определять его в конце? Или вы считаете, что лучше использовать статические константы для этого типа вещей? Существует ли ограничение производительности при использовании статических констант или компилятор способен обрабатывать их так же эффективно, как #define?