La codifica di un'app per iOS è un compito arduo, quindi è logico che gli sviluppatori vogliano tagliare gli angoli e trovare modi per ottenere la loro app online il più rapidamente possibile. Ma un'app di successo rimarrà per molto tempo, ovvero anni di risoluzione dei bug, miglioramenti delle funzionalità e collaborazione con altri codificatori.
In questo articolo, condividerò tre cose da tenere a mente durante lo sviluppo di iOS che renderà le tue app più facili da costruire e più facili da mantenere.
Mentre sembra che le variabili siano più versatili delle costanti, non è comunque una buona idea impostare di default le variabili quando invece è possibile utilizzare una costante. Quindi cosa c'è di così importante nelle costanti? Un certo numero di cose, in realtà!
Una delle cose migliori delle costanti è la loro leggibilità. Diamo un'occhiata a un esempio: stai scrivendo un'app di tipo e-commerce. È possibile che si desideri aggiungere un'aliquota IVA locale dell'8,75%, ma altri sviluppatori non saprebbero cosa significa quel numero. Diamo un'occhiata a un esempio:
Uno sviluppatore di nome Steven arriva a bordo della tua squadra, ed è un ninja codificante, ma vive in un paese oltreoceano. In questo paese non esiste l'imposta sulle vendite (fortunato Steven), e quindi non ne sa nulla.
Se dovessi utilizzare una variabile per l'aliquota dell'imposta sulle vendite, potrebbe modificarla in una sola riga di codice e i risultati potrebbero danneggiare seriamente la tua app. Basta cambiare la parola chiave da var
a permettere
avrebbe il compilatore dicendogli che il valore non può essere cambiato, e si renderebbe conto che intendevi che fosse immutabile.
Un altro modo permettere
è utile è fare riferimento a un valore nel tuo codice. Se stai facendo un'app, potresti volere una certa combinazione di colori. Invece di copiare e incollare i colori ovunque siano necessari, è possibile utilizzare una costante per fare riferimento a quel colore specifico.
In questo modo, se dovessi cambiare il colore, avresti solo bisogno di cambiarlo in un posto invece di trovare ogni singolo riferimento al colore e cambiarlo più volte.
Quando crei un singleton, devi anche creare un'istanza condivisa della classe. Solitamente lo fai dichiarando a let statico
all'interno della dichiarazione di classe. Successivamente, dovresti assegnare un nome alla costante e assegnarla a un'istanza della classe e utilizzarla nell'intera app.
Aggiungendo a ciò, se hai bisogno di istanziare (creare un'istanza di) una classe regolare, forse in ViewController.swift, crei una costante e la assegni a un'istanza della classe desiderata, lasciandoti un riferimento che puoi facilmente sfruttare in tutto il file. Questo è un altro grande uso delle costanti.
Come puoi vedere, ci sono molte ragioni per cui le costanti sono grandi. Aumentano la leggibilità del codice, sono utili per memorizzare valori immutabili e, chiaramente, non sono così inutili come si pensa. Fatti un favore prendendo l'abitudine di usare le costanti ogni volta che è possibile, e cambiandole in variabili solo se hai assolutamente bisogno di mutare i loro valori, ti farà diventare un programmatore migliore.
Gli optionals sono una funzionalità molto potente di Swift. Sono solo tipi come int
e Stringa
, annotato da un punto interrogativo dopo la dichiarazione del tipo. Se vuoi dichiarare una variabile come una stringa opzionale, devi semplicemente scrivere:
var someVariable: String?
Questo dice al compilatore che può esserci un valore o che non ci può essere alcun valore. Stringa?
e Stringa
sono considerati due tipi diversi.
Pensa agli optionals come a un regalo. Come ho già detto, questa confezione regalo potrebbe avere o meno un valore e, se vuoi scoprirlo, devi prima scartare l'opzione facoltativa. Ci sono molti modi per farlo:
Questa operazione (eseguita utilizzando un punto esclamativo) viene chiamata Operatore Bang. Non usarlo! Forzare scartare le tue variabili non è mai una buona idea. Se il valore dell'opzione che stai cercando di scartare è nullo (niente), la tua app si bloccherà e chi lo vorrebbe? Ad ogni modo, diamo un'occhiata al seguente blocco di codice:
var someVariable: String? var somethingElse: String = "hello" func setupApp () self.somethingElse = self.someVariable!
In questo esempio, l'app si arresterebbe in modo anomalo perché non abbiamo mai definito un valore per someVariable
, e stiamo cercando di assegnarlo a una variabile di tipo Stringa
. Ciò sconfigge l'intero scopo degli optionals, che sono lì per aiutarci a proteggerci da errori come questo!
Diamo un'occhiata ad alcuni dei modi corretti per gestire la stessa situazione.
Questo è uno dei metodi più popolari di gestione degli optionals. In questo metodo, si assegna semplicemente un valore facoltativo a una costante utilizzando un Se
dichiarazione. Se l'opzionale può essere scartato, il compilatore inserisce la chiusura ed è possibile utilizzare la costante creata. Altrimenti, cadi in un altro
dichiarazione e far finta che non sia successo nulla. Diamo un'occhiata ad un esempio di questo:
var someVariable: String? var somethingElse: String = "hello" func setupApp () if let theThing = someVariable self.somethingElse = self.someVariable! else print ("error")
Usando lo stesso esempio dell'ultima volta, ma con l'associazione opzionale, possiamo vedere che invece di andare in crash, il compilatore inserisce la dichiarazione else e stampa "errore".
Un altro modo comune per scartare gli optionals in modo sicuro è il concatenamento opzionale. Questo è un ottimo modo per evitare valori nulli in modo pulito e in un'unica riga di codice. Quando si utilizza questo metodo e si incontra un valore nullo, quella riga di codice semplicemente cessa di essere eseguita. Ecco un esempio di questo:
var someClass: SomeClass? = SomeClass () var somethingElse: String? func setupApp () self.somethingElse = someClass? .createString ()
In sostanza, se someClass
è nulla, l'intera riga non verrà eseguita e il valore di qualcos'altro
diventerà nullo. Se c'è un valore, come nell'esempio sopra, sarà assegnato alla variabile qualcos'altro
. In entrambi i casi, l'app non si arresta in modo anomalo.
Questo metodo gestisce gli optionals con una sola riga, ma a differenza del metodo sopra, tu bisogno per fornire un caso predefinito o "altro" (nel caso in cui l'opzionale risultasse essere nullo). Diamo un'occhiata a un esempio:
var someVariable: String? var somethingElse: String = "hello" func setupApp () self.somethingElse = someVariable ?? "errore"
Anche se questo può sembrare un po 'criptico, significa semplicemente che se l'affermazione della mano sinistra ha un valore (in altre parole non è nulla), verrà usata. Se è nullo, verrà utilizzata l'istruzione predefinita, in questo caso una stringa codificata. Vale la pena notare che la dichiarazione della mano destra deve essere di tipo non nullo e non facoltativo (altrimenti, lo scopo di questo sarebbe sconfitto).
Un altro errore comune è la mancata strutturazione del codice in modo che sia sostenibile, gestibile ed efficiente. Molte persone stipano tutto il loro codice nel loro ViewController
classi, e questo può rendere difficile la modifica e il debug del codice.
Come può sembrare un cliché, questo è davvero il fondamento di come si programma la tua app. Diciamo che stai costruendo una casa, la casa dei tuoi sogni. Questa casa è alta cinque piani, quindi se non costruisci una solida base e segui i progetti, probabilmente si rovescia.
La base di un'app per iOS è il modello di progettazione che scegli. Diamo un'occhiata a due dei modelli più comunemente usati.
Il modello Model View Controller o MVC separa ogni parte del codice in tre parti: il modello, la vista e il controller.
Ci sono molte varianti di questo, come MVVM e MVP. Vale la pena leggerli,ma il principio è simile a MVC, quindi non li copriremo qui. Questi sono tutti chiamati modelli di progettazione e rendono modulare il nostro codice.
Diamo un'occhiata a un altro modello di progettazione che può completare il modello di app che scegli di utilizzare.
Un singleton è una singola istanza di una classe che è presente in ogni momento in memoria. Allora perché ci importa di questo? Bene, diciamo che stai costruendo un'app che si connette a un database. Hai bisogno di un posto dove mettere tutte le tue connessioni al servizio dati. Questo sarebbe un posto perfetto per usare i singleton. Guarda il codice qui sotto; ti mostrerà come costruire un singleton:
// Classe di dichiarazione DataService static var shared = DataService () func createUser () // Call-site DataService.shared.createUser ()
Se segui questi semplici suggerimenti, la tua app sarà più semplice da mantenere e i bug saranno più ovvi da trovare prima che i tuoi clienti lo facciano.
In questo articolo abbiamo visto tre errori che gli sviluppatori di app di iOS potrebbero rendere più semplice la codifica, ma a lungo termine costano molto più lavoro.
Ricorda, creare un'applicazione è solo una parte della sfida: devi anche correggere bug, aggiungere funzionalità e condividere il codice con altri sviluppatori. Seguendo le migliori pratiche come l'uso delle costanti, la gestione corretta degli optionals e l'utilizzo di schemi architettonici, la tua app sarà più facile da costruire e più facile da mantenere.
Mentre sei qui, dai uno sguardo ad alcuni dei nostri altri post sullo sviluppo di app per iOS!