Я искал много вопросов об объектах ObjC и синтезированных аксессуарах безрезультатно. Этот вопрос больше связан с вопросом "помогите мне решить вопрос"; Я не ожидаю ответа, но я скорее ищу экспертов для взвешивания аргументов.
В классе Cocoa Touch я бы написал такой код (где soundEffects
- синтезированное свойство NSArray):
id foo = [self.soundEffects objectAtIndex:1];
Коллега попросил меня объяснить, почему выше это лучше, чем эта строка:
id foo = [soundEffects objectAtIndex:1];
Ну, функционально, это ничем не отличается.
Мои аргументы для первого:
-
self.soundEffects
указывает каждому другому кодеру, работающему над кодом, что это iVar, а не локальная область. -
Если нам когда-либо понадобится, мы могли бы поместить пользовательскую логику в аксессуар
soundEffects
getter. -
По какой-то конкретной причине он "чувствует", как правильно, что нужно делать после работы в Obj-C в течение года.
Он принимает аргументы # 1 и # 2 как действительные, но также дает контрапункт:
-
Разве это не просто раздувание кода?
-
Не следует ли разрешать классу напрямую общаться со своими iVars без необходимости вызова метода (getter) на себя?
Любые участники?