Ответ 1
Короткий ответ: зависит.
Длинный ответ:
Если у вас есть маленькие короткие классы, которые сильно привязаны вместе, правильно поместить их в один файл.
Если у вас длинные, несвязанные классы, то лучше поместить их в разные файлы.
Является ли это плохой способ создания нескольких классов в одном файле swift
, или лучше всего создать отдельный файл swift
для каждого класса?
Например, что лучше:
1. alpha.swift:
class alpha: UIViewController { ... }
class beta: UIWebView { ... }
class gamma: UINavigationController { ... }
1. В alpha.swift:
class alpha: UIViewController { ... }
2. В beta.swift:
class beta: UIWebView { ... }
3. В gamma.swift:
class gamma: UINavigationController { ... }
Короткий ответ: зависит.
Длинный ответ:
Если у вас есть маленькие короткие классы, которые сильно привязаны вместе, правильно поместить их в один файл.
Если у вас длинные, несвязанные классы, то лучше поместить их в разные файлы.
Это не плохой метод, IF, связанные с классами.
Чтобы решить, связаны ли они, спросите: Можно ли использовать один класс без другого?
Если да, то у вас должно быть два разных файла, так как вам может потребоваться использовать только один из двух.
Например, в С++ коллекции имеют внутренний класс для своих итераторов. (Я знаю, что это пример С++, но вопрос на самом деле не связан с языком).
Хотя если классы не имеют ничего общего друг с другом (на одном и том же представлении не учитываются), тогда у каждого из них должны быть свои отдельные классы.
У меня есть другой ответ на этот вопрос, основанный на болезненной отладке и поиске в Интернете за последние несколько дней. Я С++ dev с более чем 15-летним опытом. Исходя из этого языка, я знаком с несколькими методами проектирования, которые нуждаются в доступе protected
. Поскольку Swift не поддерживает его, и, как выясняется, они не будут поддерживать его в ближайшем будущем, я начинаю использовать private
доступ и писать несколько классов в одном файле. Таким образом, я обошел отсутствующий модификатор protected
(частные функции видны в одном файле, поэтому они будут видны для всех классов в одном файле, и если эти классы являются производными классами, то частные фактически работают как защищенные), Ну, все в порядке, и я был счастлив, прежде чем узнал, что мое приложение потерпело крах с кодом EXC_BAD_ACCESS = 1... Исключения были не из-за моего кода, это было из-за того, что макет участников был чем-то неправильным. Например, если я назвал одну функцию a() из производного класса через переменную экземпляра, вызывалась функция func b(). B() также был членом одного и того же класса и определялся перед a(). Вот почему некоторые функции выбрали исключение для плохого доступа. Указатель экземпляра был поврежден. После того, как я переместил все 3 класса в независимые файлы, все выглядело нормально.
Не уверен, что это была настоящая причина, или я сделал что-то неправильно, но не 100% случаев, когда вы определяете несколько классов в одном файле, будет с определенным поведением. Возможно, это проблема компилятора, Swift - это молодой язык, и даже я тестирую студию Gold Master, которая должна быть стабильной, все еще много ошибок.