İçeriğe geç

Architecture contract (ARCH9204)

Anahtar swift.architecture.contract · Önem error · Kategori architecture

Katman yönüne, feature sınırına ya da projenin kendi mimari kurallarına aykırı bir tip referansını işaretler: Feature/, Features/ ya da Slices/ altındaki kodun başka bir feature’ın davranışını (fonksiyon gövdeli class, actor ya da struct, SwiftUI view - model struct’ları, enum ve protocol’leri serbest) kullanması; sunum katmanını (Views, Scenes, Screens, UI, Presentation) kullanan data, network, servis ya da domain kodu; data katmanının domain’ini kullandığı bir modülde domain’in data katmanını kullanması (domain’in data katmanını çağırdığı yerde bu tasarımın kendisidir); ya da Proje ayarları > Tarama’daki bir kuralın yasakladığı her bağımlılık. Bir hedefin Swift dosyaları birbirini import’suz görür; referans, onu bildiren dosyaya çözülen tip adıdır. İki hedef arasındaki referans build’de tanımlıdır ve yalnız sunum kuralına ve projenin kurallarına göre denetlenir. Klasör adlarından okunur, tip adlarından değil.

App/Network/Response/ProductResponse.swift
struct ProductResponse: Decodable {
let type: String
var uiType: HologramType { HologramType(rawValue: type) ?? .unknown } // HologramType lives in App/Scenes/Hologram
}
App/Network/Response/ProductResponse.swift
struct ProductResponse: Decodable {
let type: String
}
// App/Scenes/Hologram/HologramType+Response.swift - the presentation layer maps the response
extension HologramType { init(_ response: ProductResponse) { self = HologramType(rawValue: response.type) ?? .unknown } }