Наследование кода от других разработчиков заставило меня твердо верить в максимально возможное количество сообщений из общедоступного интерфейса класса с помощью расширения класса. Я также твердо убежден в том, что вы принимаете специальные соглашения об именах для частных членов класса, связанных с реализацией. Мне очень нравится иметь возможность сразу сказать, какие сообщения отправляются и какие участники ссылаются в контексте реализации, никогда не предназначены для общественного использования и наоборот. Если ничего другого, это облегчит мне понимание всей семантики класса, и это стоит того.
Оправдание в стороне, я написал лодку классов с лодками 2 частных методов, но у меня никогда не возникало шаблона для наименования, которое я действительно люблю (например, я занимаюсь спорным ivar_ для ivars). Известные примеры:
@interface myClass()
// I like this, but as we all know, Apple has dibs on this one,
// and method name collisions are nasty.
- (void)_myPrivateMessage;
// The suffix version promoted by Google for ivars doesn't really translate
// well to method names in Objective-C, because of the way the method
// signature can be broken into several parts.
- (void)doWork_; // That okay...
- (void)doWork_:(id)work with_:(id)something; // That just ugly and tedious...
- (void)doWork_:(id)work with_:(id)something and_:(id)another; // My eyes...
// This version is suggested by Apple, and has the benefit of being officially
// recommended. Alas, I don't like it: The capital letter is ugly. I don't like
// underscores in the middle of the name. Worst of all, I have to type three characters
// before code-sense does anything more useful than inform me that I am typing.
- (void)BF_doWork;
@end
В этот момент есть кадзиллион различных средств, с помощью которых я могу калечить имена своих частных методов, но вместо того, чтобы что-то сделать, я решил, что сначала возьму опрос для любых популярных конвенций, о которых я, возможно, и не подозреваю. Итак, что вы использовали?