Является ли использование реализаций метода без заголовков хорошей практикой или осуждается? - PullRequest
0 голосов
/ 18 апреля 2011

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

Но не обязательно объявлять интерфейс для каждого метода.Если вы ссылаетесь только на методы ниже кода их реализации того же класса / файла, нет необходимости помещать какие-либо объявления где-либо еще.

-(void) doSomething {
}

-(void) doSomethingElse {
    [self doSomething];
}

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

Что такоемнение общественности по этому вопросу?

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Общее правило, которому я следую, состоит в том, что если единственный метод, вызывающий doSomething, это doSomethingElse, то вполне нормально, что , а не , должны doSomething быть частью объявленного частного интерфейса. Но как только второй метод использует doSomething, я добавляю его в объявленный интерфейс.

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

0 голосов
/ 18 апреля 2011

Некоторые другие варианты стиля кодирования делают ответ на этот вопрос действительно простым:

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

  • Некоторые люди выступают за порядокметоды от более общего к более конкретному;в этой модели ваш пример упорядочен неверно, и единственный способ исправить это - создать объявление.

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

...