Kako pisati kod da radi brzo sa stanovišta dinamičkog upravljanja?
sobes.tech АИ
Одговор од АИ
Koristite struct i enum umesto class gde je to moguće. Tipovi vrednosti po default-u ne koriste dinamičku distribuciju.
Primijenite final na klase i metode da biste spriječili nasleđivanje i prepisivanje, omogućavajući kompajleru da izvrši direktnu distribuciju.
final class MyFinalClass { // Klasa ne može biti nasledjena
final func myFinalMethod() { // Metod ne može biti prepisan
// ...
}
}
Koristite protokole sa zahtevima samo static ili final metoda/properties, ili sa generičkim koji mogu biti specijalizovani tokom kompajlacije.
protocol MyProtocol {
static func staticMethod()
}
Koristite private i fileprivate za metode i svojstva unutar klasa/struktura/enuma. Ovo može omogućiti kompajleru da koristi bržu distribuciju, jer je opseg ograničen.
class MyClass {
private func privateMethod() {
// ...
}
}
Izbegavajte često korišćenje opštih protokola u runtime-u, gde su konkretni tipovi unapred nepoznati, jer pozivi preko protokola koriste virtuelnu tabelu. Preferirajte generike gde je to moguće u fazi kompajlacije.
Koristite atribut @inline(__always). To je savet kompajleru da pokuša da ugrađe telo funkcije na mesto poziva, izbegavajući troškove poziva funkcije. Ne daje uvek korist.
@inline(__always)
func myInlinedFunction() {
// ...
}