Codarea unei aplicații iOS este o muncă grea, așa că este logic ca dezvoltatorii să urmărească reducerea colțurilor și să găsească modalități de a obține aplicația lor online cât mai repede posibil. Dar o aplicație de succes va fi pe o perioadă lungă de timp - adică ani de fixare a erorilor, îmbunătățiri ale caracteristicilor și colaborarea cu alți coderi.
În acest articol, voi împărți trei lucruri pentru a evita dezvoltarea în timpul dezvoltării iOS, care va face aplicațiile dvs. mai ușor de construit și mai ușor de întreținut.
În timp ce se pare că variabilele sunt mai versatile decât constantele, încă nu este o idee bună să impliciți variabilele când puteți folosi o constantă în loc. Deci, ce este minunat despre constante? Mai multe lucruri, de fapt!
Unul dintre cele mai bune lucruri despre constante este lizibilitatea lor. Să examinăm un exemplu: scrieți o aplicație de tip e-commerce. Poate doriți să adăugați o rată locală de impozit pe vânzări de 8,75%, dar alți dezvoltatori nu ar ști ce înseamnă acest număr. Să examinăm un exemplu:
Un dezvoltator numit Steven vine la bordul tău, iar el este un ninja codificator, dar locuiește într-o țară în străinătate. În această țară, nu există nici un fel de impozit pe vânzări (norocos Steven), și, prin urmare, el nu știe nimic despre el.
Dacă doriți să utilizați o variabilă pentru rata de impozitare a vânzărilor, ar putea să o modificați într-o singură linie de cod și rezultatele acesteia ar putea dăuna grav aplicației dvs. Doar schimbarea cuvântului cheie de la var
la lăsa
ar avea compilatorul să-i spună că valoarea nu poate fi schimbată și el își va da seama că intenționați să fie imuabil.
Încă un fel lăsa
este util să se refere la o valoare din codul tău. Dacă faceți o aplicație, este posibil să doriți o anumită schemă de culori. În loc să copiați culorile oriunde doriți, puteți folosi o constantă pentru a vă referi la acea culoare specifică.
În acest fel, dacă ați schimba culoarea, trebuie doar să o schimbați într-un singur loc în loc să găsiți fiecare referință la culoare și să o modificați de mai multe ori.
Când creați un singleton, trebuie, de asemenea, să creați o instanță partajată a clasei. În mod normal, ați face acest lucru declarând a static let
în interiorul declarației clasei. După aceea, ați numi constanta și o atribuiți unei instanțe a clasei și o veți folosi în întreaga aplicație.
Adăugând la aceasta, dacă a trebuit să instanțiați (creați o instanță) a unei clase obișnuite, probabil în ViewController.swift, ați crea o constantă și o atribuiți unei instanțe a clasei dorite, lăsându-vă o referință pe care o puteți folosi cu ușurință în întregul fișier. Aceasta este o altă mare utilizare a constantelor.
După cum puteți vedea, există multe motive pentru care constantele sunt minunate. Acestea cresc lizibilitatea codului, sunt utile pentru stocarea valorilor imuabile și, în mod clar, ele nu sunt la fel de inutile pe cât credeți. Fă-ți o favoare obișnuindu-te să folosești constantele ori de câte ori este posibil și schimbându-le doar în variabile dacă ai absolut nevoie să le muți valorile - te va face un programator mai bun.
Opțiunile sunt o caracteristică foarte puternică a lui Swift. Sunt doar niște tipuri int
și Şir
, adnotat de un semn de întrebare după declarația de tip. Dacă doriți să declarați o variabilă ca șir opțional, ați scrie:
var someVariable: String?
Acest lucru îi spune compilatorului că există fie o valoare, fie că nu ar putea exista nicio valoare. Şir?
și Şir
sunt considerate a fi două tipuri diferite.
Gândiți-vă la opțiuni ca o cutie cadou. După cum am menționat, această cutie cadou poate sau nu poate avea o valoare, iar dacă doriți să aflați, trebuie să vă despachetați primul opțional. Există multe modalități de a face acest lucru:
Această operațiune (efectuată prin utilizarea unui semn de exclamare) este numită operatorul Bang. Nu-l folosiți! Forțarea desfacerii variabilelor tale nu este niciodată o idee bună. Dacă valoarea opțiunii pe care încercați să o dezarhivați este zero (nimic), aplicația dvs. se va prăbuși și cine vrea acest lucru? Oricum, să ne uităm la următorul bloc de cod:
var someVariable: String? var cevaElse: String = "hello" func setupApp () self.somethingElse = self.someVariabilă!
În acest exemplu, aplicația s-ar prăbuși deoarece nu am definit niciodată o valoare someVariable
, și încercăm să o atribuim unei variabile de tip Şir
. Acest lucru învinge întregul scop al opțiunilor, care sunt acolo pentru a ne ajuta să ne protejăm de astfel de erori!
Să ne uităm la unele dintre modalitățile corecte de abordare a aceleiași situații.
Aceasta este una dintre cele mai populare metode de abordare a opțiunilor. În această metodă, pur și simplu atribuiți o valoare opțională unei constante folosind un dacă
afirmație. Dacă opțiunea poate fi dezvelită, compilatorul intră în închidere și puteți utiliza constanta care a fost creată. Altfel, intrați într-un altfel
declarați și pretindeți că nu sa întâmplat nimic. Să aruncăm o privire asupra acestui exemplu:
var someVariable: String? var cevaElse: String = "hello" func setupApp () dacă permite TheThing = someVariable self.somethingElse = self.someVariable! altceva print ("eroare")
Folosind același exemplu ca și ultima oară, dar cu legarea opțională, putem vedea că în loc să se prăbușească, compilatorul intră în declarația else și imprimă "eroare".
O altă modalitate obișnuită de a dezinstala în mod opțional opțiunile este lanțarea opțională. Aceasta este o modalitate excelentă de a evita cu ușurință valori zero și într-o singură linie de cod. Când utilizați această metodă și întâlniți o valoare zero, acea linie de cod pur și simplu încetează să se execute. Iată un exemplu de acest lucru:
var someClass: SomeClass? = SomeClass () var cevaElse: String? func setupApp () self.somethingElse = someClass? .createString ()
Practic, dacă someClass
este zero, întreaga linie nu va executa, iar valoarea lui altceva
va deveni zero. Dacă există o valoare, ca exemplul de mai sus, va fi alocată variabilei altceva
. În ambele cazuri, aplicația nu se va prăbuși.
Această metodă gestionează opțiunile cu o singură linie, dar spre deosebire de metoda de mai sus, tu nevoie pentru a furniza un caz implicit sau altceva (în cazul în care opțiunea se dovedește a fi zero). Să examinăm un exemplu:
var someVariable: String? var cevaElse: String = "salut" func setupApp () self.somethingElse = someVariable? "eroare"
Deși acest lucru poate părea puțin cam criptic, înseamnă pur și simplu că, dacă declarația de stânga are o valoare (cu alte cuvinte nu este zero), va fi folosită. Dacă este zero, atunci va fi folosită instrucțiunea implicită - în acest caz, un șir greu codificat. Este demn de remarcat faptul că declarația de dreapta trebuie să fie de tip non-nil și non-opțional (în caz contrar, scopul acestuia ar fi învins).
O altă greșeală obișnuită este faptul că nu reușiți să vă structurați codul într-un mod care să fie durabil, întreținut și eficient. Mulți oameni își îmbracă tot codul ViewController
clase, iar acest lucru poate face ca codul dvs. să fie greu de schimbat și depanat.
Deoarece cliché-ul poate suna, acest lucru este într-adevăr fundamentul modului în care programați aplicația dvs. Să zicem că construiești o casă, casa ta de vis. Această casă are o înălțime de cinci etaje, deci, dacă nu construiți o fundație solidă și nu urmați planurile, se va răsturna probabil.
Fundația unei aplicații iOS este modelul de design pe care îl alegeți. Să ne uităm la două dintre cele mai utilizate modele.
Modelul-View-Controller sau modelul de design MVC separă fiecare parte a codului dvs. în trei părți: modelul, vizualizarea și controlerul.
Există numeroase variații, cum ar fi MVVM și MVP. Merită să le citiți,dar principiul este similar cu MVC, așa că nu le vom acoperi aici. Acestea sunt toate numite modele de design, și fac codul nostru modular.
Să ne uităm la un alt model de design care poate completa modelul de aplicație pe care îl alegeți să îl utilizați.
Un singur ton este o singură instanță a unei clase care este prezentă în orice moment în memorie. De ce ne pasă de asta? Să presupunem că construiți o aplicație care se conectează la o bază de date. Aveți nevoie de un loc pentru a pune toate conexiunile de servicii de date. Ar fi un loc perfect pentru a folosi singleturi. Uită-te la codul de mai jos; vă va arăta cum să construiți un singleton:
// Clasa de declarare DataService static var shared = DataService () func createUser () // DataService.shared.createUser ()
Dacă urmați aceste sfaturi simple, aplicația dvs. va fi mai ușor de întreținut, iar bug-urile vor fi mai evidente pentru a le găsi în fața clienților dvs..
În acest articol, am văzut trei greșeli pe care dezvoltatorii de aplicații iOS le-ar putea face să pară mai ușor de codificat, dar costă mult mai mult pe termen lung.
Rețineți că construirea unei aplicații este doar o parte a provocării - trebuie, de asemenea, să remediați erorile, să adăugați funcții și să partajați codul cu alți dezvoltatori. Urmând cele mai bune practici, cum ar fi utilizarea constantelor, manipularea opțiunilor în mod corect și folosirea modelelor arhitecturale, aplicația dvs. va fi mai ușor de construit și mai ușor de întreținut.
În timp ce sunteți aici, verificați câteva dintre celelalte postări ale noastre privind dezvoltarea aplicațiilor iOS!