Sobes.tech
Middle+

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() {
    // ...
}