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.
Yanlış
Bölüm başlığı “Yanlış”struct ProductResponse: Decodable { let type: String var uiType: HologramType { HologramType(rawValue: type) ?? .unknown } // HologramType lives in App/Scenes/Hologram}struct ProductResponse: Decodable { let type: String}
// App/Scenes/Hologram/HologramType+Response.swift - the presentation layer maps the responseextension HologramType { init(_ response: ProductResponse) { self = HologramType(rawValue: response.type) ?? .unknown } }