У мене є клас, який встановлює масив вузлів і з'єднує їх один з одним у структурі, подібній графіку. Це найкраще:
- Зберігайте функціонал для ініціалізації та підключення вузлів в одній функції
- Майте функціонал ініціалізації та підключення у двох різних функціях (і має залежний порядок, за яким функції потрібно викликати, хоча майте на увазі, що ці функції є приватними.)
Спосіб 1: (Погано в тому, що одна функція робить дві речі, АЛЕ вона зберігає залежну функціональність, згруповану разом - вузли ніколи не повинні бути з'єднані без ініціалізації спочатку.)
init() {
setupNodes()
}
private func setupNodes() {
// 1. Create array of nodes
// 2. Go through array, connecting each node to its neighbors
// according to some predefined constants
}
Спосіб 2: (Краще в тому сенсі, що це самодокументування, але НЕ connectNodes () ніколи не слід викликати перед setupNodes (), тому кожен, хто працює з внутрішніми класами, повинен знати про цей порядок.)
init() {
setupNodes()
}
private func setupNodes() {
createNodes()
connectNodes()
}
private func createNodes() {
// 1. Create array of nodes
}
private func connectNodes() {
// 2. Go through array, connecting each node to its neighbors
// according to some predefined constants
}
Захоплено почути будь-які думки.