3 errori terribili di sviluppatori iOS

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.

1. Non aver paura delle costanti

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à!

leggibilità

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 varpermettere avrebbe il compilatore dicendogli che il valore non può essere cambiato, e si renderebbe conto che intendevi che fosse immutabile.

Riferimento di valore

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.

Istanziazione di Classe o Struct 

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.

2. Non forzare Scartare i Optionals

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?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:

La strada sbagliata

Forzato Unwrapping

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.

Il modo giusto

Associazione facoltativa 

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".

Concatenamento opzionale

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.

Nil coalescenza

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).

3. Non ignorare l'architettura

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.

MVC (Model-View-Controller)

Il modello Model View Controller o MVC separa ogni parte del codice in tre parti: il modello, la vista e il controller. 

  • Modello: Il modello è essenzialmente i dati dell'app. Questo gestisce cose come strutture e classi riutilizzabili che trattano solocon i dati dell'app. Il modello non gestire tutto ciò che riguarda la vista o il modo in cui le informazioni verranno mostrate all'utente.
  • Vista: La vista è responsabile solo della rappresentazione visiva dei dati e gestisce anche l'interazione dell'utente. esso nongestire tutto ciò che riguarda i dati, né trattare con visualizzazioni specifiche. È semplicemente una classe riutilizzabile che può essere utilizzata più volte senza ripetere il codice.
  • controller: Il controller è il capo. Porta i dati dal modello e quindi li invia alla vista per visualizzarli infine all'utente. Questo è in genere in ViewController.swift, e ascolta l'input e modifica il modello secondo necessità.

Ci sono molte varianti di questo, come MVVM 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.

Singletons

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.

Conclusione

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!