Подтвердить что ты не робот

Допустимо ли создавать несколько классов в одном .swift файле или я должен создать отдельный отдельный .swift файл для каждого класса?

Является ли это плохой способ создания нескольких классов в одном файле swift, или лучше всего создать отдельный файл swift для каждого класса?

Например, что лучше:

A. Несколько классов в ViewController.swift:

1. alpha.swift:

class alpha: UIViewController { ... }
class beta: UIWebView { ... }
class gamma: UINavigationController { ... }

В. Разделяйте файлы .swift для каждого класса:


1. В alpha.swift:

class alpha: UIViewController { ... }

2. В beta.swift:

class beta: UIWebView { ... }

3. В gamma.swift:

class gamma: UINavigationController { ... }
4b9b3361

Ответ 1

Короткий ответ: зависит.

Длинный ответ:
Если у вас есть маленькие короткие классы, которые сильно привязаны вместе, правильно поместить их в один файл.
Если у вас длинные, несвязанные классы, то лучше поместить их в разные файлы.

Ответ 2

Это не плохой метод, IF, связанные с классами.

Чтобы решить, связаны ли они, спросите: Можно ли использовать один класс без другого?

Если да, то у вас должно быть два разных файла, так как вам может потребоваться использовать только один из двух.


Например, в С++ коллекции имеют внутренний класс для своих итераторов. (Я знаю, что это пример С++, но вопрос на самом деле не связан с языком).

Хотя если классы не имеют ничего общего друг с другом (на одном и том же представлении не учитываются), тогда у каждого из них должны быть свои отдельные классы.

Ответ 3

У меня есть другой ответ на этот вопрос, основанный на болезненной отладке и поиске в Интернете за последние несколько дней. Я С++ dev с более чем 15-летним опытом. Исходя из этого языка, я знаком с несколькими методами проектирования, которые нуждаются в доступе protected. Поскольку Swift не поддерживает его, и, как выясняется, они не будут поддерживать его в ближайшем будущем, я начинаю использовать private доступ и писать несколько классов в одном файле. Таким образом, я обошел отсутствующий модификатор protected (частные функции видны в одном файле, поэтому они будут видны для всех классов в одном файле, и если эти классы являются производными классами, то частные фактически работают как защищенные), Ну, все в порядке, и я был счастлив, прежде чем узнал, что мое приложение потерпело крах с кодом EXC_BAD_ACCESS = 1... Исключения были не из-за моего кода, это было из-за того, что макет участников был чем-то неправильным. Например, если я назвал одну функцию a() из производного класса через переменную экземпляра, вызывалась функция func b(). B() также был членом одного и того же класса и определялся перед a(). Вот почему некоторые функции выбрали исключение для плохого доступа. Указатель экземпляра был поврежден. После того, как я переместил все 3 класса в независимые файлы, все выглядело нормально.

Не уверен, что это была настоящая причина, или я сделал что-то неправильно, но не 100% случаев, когда вы определяете несколько классов в одном файле, будет с определенным поведением. Возможно, это проблема компилятора, Swift - это молодой язык, и даже я тестирую студию Gold Master, которая должна быть стабильной, все еще много ошибок.