Зачем иметь несколько классов в одном исходном файле?

#objective-c

#objective-c

Вопрос:

Я просматривал образец приложения Cocoa от Apple (ImageKitDemo) и заметил, что один из исходных файлов (файл .m) на самом деле содержит определение (интерфейс и реализацию) другого класса. Каковы преимущества этого?

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

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

2. То, как вы решите отразить свои классы в файловой иерархии, является деталью организационной реализации. Наиболее распространенный подход — один класс означает один .h и один .m — но если это имеет организационный смысл, вы можете делать все, что хотите. Иногда, например, если это простая модель, я помещаю интерфейсы для определенного объекта модели, а также интерфейс для набора / массива объектов модели в один файл, потому что очень полезно иметь их рядом друг с другом (и они крошечные).

Ответ №1:

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

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

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

Ответ №2:

Меньшее общее количество файлов в вашем проекте. Кроме того, никакой разницы. Вы могли бы написать целый проект в файле формата 1 .m, если бы действительно захотели.

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

1. Кому не нравится прокручивать 100000 строк кода в одном файле? 😉