#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, которая должна быть стабильной, все еще много ошибок.