Полезно ли использовать внутренние классы в swift для моделей? - PullRequest
0 голосов
/ 20 мая 2019

У меня есть несколько проектов, которые используют мою библиотеку API. Этот API использует общее имя класса, например «Документ» или «Контракт», для своих моделей.

Я знаю, что могу использовать префикс, но я спрашиваю себя, не лучше ли делать внутренние классы следующим образом:

//My main class

class MyApi {

    func fetchDocuments(completion: ([Document]) -> Void){}
    func fetchContracts(completion: ([Contract]) -> Void){}
}

//MyApi.Document.swift

extension MyApi {
    class Document { 
      .... 
   }
}

//MyApi.Contract.swift

extension MyApi {
    class Contract { 
      .... 
    }
}

//a cell config
func setup(document: MyApi.Document) {

}

Кажется более ясным, что этот объект связан с этим API и разрешает конфликт имен с другим классом с тем же именем. Как вы думаете, это хорошее решение? Какой вариант, если нет?

Ответы [ 2 ]

4 голосов
/ 20 мая 2019

Это хорошая практика для организации вашего пространства имен, и вопрос связан с приведенным ниже: Свойства вложенного класса Swift

2 голосов
/ 20 мая 2019

Нет проблем с внутренними классами / структурами, это зависит от того, как вы хотите, чтобы каждый модуль был отделен от другого, другой вариант имеет соглашение о длинных именах

class ModuleA  ... }
class ModuleA1 { ... }
class ModuleA2 { ... }

class ModuleB  ... }
class ModuleB1 { ... }
class ModuleB2 { ... }

Преимущество вложенного состоит в том, что вы можете применить скрытие, просто изменив модификатор доступа с корневым классом, вместо того, чтобы писать его перед каждым отдельным классом

...