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

#class #swift

#класс #swift

Вопрос:

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

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

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

1. alpha.swift:

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

B. Отдельные файлы .swift для каждого класса:

1. В alpha.swift:

 class alpha: UIViewController { ... }
  

2. В бета-версии.swift:

 class beta: UIWebView { ... }
  

3. В gamma.swift:

 class gamma: UINavigationController { ... }
  

Ответ №1:

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

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

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

1. Согласен, кроме того, если у вас большая база кода, хранение классов в их собственных файлах просто упрощает их поиск при навигации по файловому дереву

Ответ №2:

Это неплохой метод, ЕСЛИ классы подключены.

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

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


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

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

Ответ №3:

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

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