3 vreselijke fouten van iOS-ontwikkelaars

Het coderen van een iOS-app is hard werken, dus is het logisch dat ontwikkelaars hun best doen om de bochten in te korten en manieren te vinden om hun app zo snel mogelijk online te krijgen. Maar een succesvolle app zal nog lang bestaan ​​- dat betekent jarenlange bugfixing, functie-uitbreidingen en het werken met andere coders. 

In dit artikel deel ik drie dingen om tijdens de ontwikkeling van iOS uit de buurt te blijven, zodat je apps eenvoudiger te bouwen en gemakkelijker te onderhouden zijn.

1. Wees niet bang voor constanten

Hoewel variabelen waarschijnlijk veelzijdiger zijn dan constanten, is het toch geen goed idee om variabelen in te stellen als u in plaats daarvan een constante kunt gebruiken. Dus wat is er zo geweldig aan constanten? Een aantal dingen eigenlijk!

Leesbaarheid

Een van de beste dingen over constanten is hun leesbaarheid. Laten we een voorbeeld bekijken: u schrijft een app van het type e-commerce. Misschien wilt u een lokaal btw-tarief van 8,75% toevoegen, maar andere ontwikkelaars weten niet wat dat getal betekent. Laten we een voorbeeld bekijken: 

Steven, een ontwikkelaar, komt aan boord van je team en hij is een codeerninja, maar hij woont in een overzees overzees land. In dit land bestaat er geen omzetbelasting (gelukkige Steven), en daarom weet hij er niets van. 

Als u een variabele zou gebruiken voor uw btw-tarief, zou hij deze in slechts één regel code kunnen wijzigen en de resultaten hiervan kunnen uw app ernstig schaden. Gewoon het sleutelwoord veranderen van var naar laat zou de compiler hem laten weten dat de waarde niet kan worden veranderd, en hij zou beseffen dat je van plan was om onveranderlijk te zijn.

Waarde Referentie

Een andere manier dat laat is handig als u naar een waarde in uw code verwijst. Als u een app maakt, wilt u misschien een bepaald kleurenschema. In plaats van uw kleuren te kopiëren en plakken waar ze nodig zijn, kunt u een constante gebruiken om naar die specifieke kleur te verwijzen.

Op deze manier, als je de kleur zou veranderen, zou je hem gewoon op één plek moeten veranderen in plaats van elke verwijzing naar de kleur te vinden en deze meerdere keren te veranderen.

Klasse- of struct-instantie 

Wanneer u een singleton maakt, moet u ook een gedeeld exemplaar van de klasse maken. U doet dit meestal door een a te declareren statisch laat binnenkant van de klasseverklaring. Hierna zou u de constante een naam geven en deze aan een instantie van de klasse toewijzen en deze in uw app gebruiken.

Voeg daar nog aan toe, als je een instantie van een reguliere klas (bijvoorbeeld een instantie) wilt instantiëren (misschien een instantie van) ViewController.swift, u zou een constante creëren en deze aan een instantie van uw gewenste klasse toewijzen, zodat u een referentie krijgt die u gemakkelijk kunt gebruiken in het gehele bestand. Dit is weer een geweldig gebruik van constanten.

Zoals je kunt zien, zijn er veel redenen waarom constanten geweldig zijn. Ze verhogen de codele leesbaarheid, ze zijn handig voor het opslaan van onveranderlijke waarden, en het is duidelijk dat ze niet zo nutteloos zijn als je denkt. Doe jezelf een plezier door de gewoonte te krijgen constanten zoveel mogelijk te gebruiken en ze alleen in variabelen te veranderen als je absoluut hun waarden moet muteren - het zal je een betere programmeur maken.

2. Forceer Unwrap Optionals niet

Optionals zijn een zeer krachtige functie van Swift. Het zijn gewoon typen zoals int en Draad, geannoteerd door een vraagteken na de typeaangifte. Als u een variabele als een optionele string wilt declareren, schrijft u gewoon:

var someVariable: String?

Dit vertelt de compiler dat er een waarde kan zijn of dat er helemaal geen waarde is. Draad? en Draad worden beschouwd als twee verschillende typen.

Denk aan optionals als een geschenkdoos. Zoals ik al zei, kan deze geschenkdoos al dan niet een waarde hebben en als u erachter wilt komen, moet u eerst de optionele uitpakken. Er zijn veel manieren om dit te doen:

De verkeerde manier

Gedwongen uitpakken

Deze handeling (uitgevoerd met een uitroepteken) wordt de Bang Operator genoemd. Gebruik het niet! Het is nooit een goed idee om het uitpakken van uw variabelen af ​​te dwingen. Als de waarde van de optionele waarde die u probeert uit te pakken nul is (niets), crasht uw app en wie wil dat? Hoe dan ook, laten we naar het volgende codeblok kijken:

var someVariable: String? var somethingElse: String = "hallo" func setupApp () self.somethingElse = self.someVariable! 

In dit voorbeeld zou de app crashen omdat we nooit een waarde hebben gedefinieerd voor someVariable, en we proberen het toe te wijzen aan een variabele van het type Draad. Dit verslaat het hele doel van optionals, die er zijn om ons te beschermen tegen fouten als deze! 

Laten we eens kijken naar enkele van de juiste manieren om met deze situatie om te gaan.

De goede weg

Optionele binding 

Dit is een van de meest populaire methoden om met optionals om te gaan. In deze methode wijst u eenvoudig een optionele waarde toe aan een constante met behulp van een als uitspraak. Als de optionele kan worden uitgepakt, de compiler wordt de sluiting, en u kunt de constante die is gemaakt gebruiken. Anders val je in een anders verklaring en beweer dat er niets is gebeurd. Laten we hier een voorbeeld van bekijken:

var someVariable: String? var somethingElse: String = "hallo" func setupApp () if let theThing = someVariable self.somethingElse = self.someVariable!  else print ("error")

Met hetzelfde voorbeeld als de vorige keer, maar met optionele binding in plaats daarvan, kunnen we zien dat de compiler in plaats van crashen de else-instructie invoert en een "fout" afdrukt.

Optionele koppeling

Een andere veel voorkomende manier om optionals veilig uit te pakken, is optionele chaining. Dit is een prima manier om nulwaarden schoon te vermijden en in één regel code. Wanneer u deze methode gebruikt en een nulwaarde tegenkomt, wordt die regel code gewoon gestopt om uit te voeren. Hier is een voorbeeld van:

var someClass: SomeClass? = SomeClass () var somethingElse: String? func setupApp () self.somethingElse = someClass? .createString ()

Kort gezegd, als SomeClass is nul, de hele regel zal niet worden uitgevoerd, en de waarde van iets anders zal nul worden. Als er een waarde is, zoals het voorbeeld hierboven, wordt deze aan de variabele toegewezen iets anders. In beide gevallen crasht de app niet.

Nil Coalescing

Deze methode verwerkt optionals met een enkele regel, maar in tegenstelling tot de bovenstaande methode, jij nodig hebben om een ​​standaard of "anders" -geval aan te bieden (in het geval dat het optionele nihil blijkt te zijn). Laten we een voorbeeld bekijken:

var someVariable: String? var somethingElse: String = "hallo" func setupApp () self.somethingElse = someVariable ?? "fout" 

Hoewel dit een beetje cryptisch lijkt, betekent het eenvoudig dat als het linkerhandschrift een waarde heeft (met andere woorden, nul is), het zal worden gebruikt. Als het nul is, wordt de standaardinstructie gebruikt, in dit geval een string met een harde codering. Het is vermeldenswaard dat de juiste verklaring moet van een niet-nul en niet-optioneel type zijn (anders zou het doel hiervan worden verslagen).

3. Negeer Architectuur niet

Een andere veel voorkomende fout is dat u uw code niet zodanig structureert dat deze duurzaam, onderhoudbaar en efficiënt is. Veel mensen proppen al hun code in hun ViewController klassen, en dit kan uw code moeilijk maken om te veranderen en te debuggen.

Hoe cliché dit ook klinkt, dit is echt de basis van hoe je je app programmeert. Laten we zeggen dat je een huis bouwt, je droomhuis. Dit huis is vijf verdiepingen hoog, dus als je geen sterke basis bouwt en de blauwdrukken volgt, zal het waarschijnlijk gewoon omvallen.

De basis van een iOS-app is het ontwerppatroon dat u kiest. Laten we kijken naar twee van de meest gebruikte patronen.

MVC (Model-View-Controller)

Het Model-View-Controller of MVC-ontwerppatroon scheidt elk deel van uw code in drie delen: het model, het aanzicht en de controller. 

  • Model: Het model is in wezen de data van de app. Dit behandelt dingen zoals herbruikbare structuren en klassen die handelen enkel en alleenmet de gegevens van de app. Het model doet niet omgaan met alles met betrekking tot de weergave of hoe de informatie aan de gebruiker wordt getoond.
  • Uitzicht: De weergave is alleen verantwoordelijk voor de visuele weergave van de gegevens en zorgt ook voor de interactie van de gebruiker. Het doet nietalles afhandelen met betrekking tot gegevens, noch behandelt het specifieke visies. Het is gewoon een herbruikbare klasse die meerdere keren kan worden gebruikt zonder code te herhalen.
  • controller: De controller is de baas. Het brengt gegevens van het model en stuurt het vervolgens naar de weergave om het uiteindelijk aan de gebruiker te tonen. Dit zit meestal in ViewController.swift, en hij luistert naar invoer en wijzigt het model naar behoefte.

Er zijn veel variaties hiervan, zoals MVVM en MVP. Het is de moeite waard om ze te lezen,maar het principe is vergelijkbaar met MVC, dus we zullen ze hier niet behandelen. Dit worden allemaal ontwerppatronen genoemd en ze maken onze code modulair. 

Laten we kijken naar een ander ontwerppatroon dat een aanvulling kan zijn op het app-patroon dat u wilt gebruiken.

singletons

Een singleton is een enkele instantie van een klasse die te allen tijde in het geheugen aanwezig is. Dus waarom geven we hierom? Nou, laten we zeggen dat je een app bouwt die verbinding maakt met een database. U hebt een plaats nodig om al uw gegevensserviceverbindingen te plaatsen. Dit zou een perfecte plek zijn om singletons te gebruiken. Kijk naar de onderstaande code; het laat je zien hoe je een singleton construeert:

// Declaratieklasse DataService static var shared = DataService () func createUser ()  // Call-site DataService.shared.createUser ()

Als u deze eenvoudige tips volgt, is uw app gemakkelijker te onderhouden en zijn bugs duidelijker om te vinden voordat uw klanten het doen.

Conclusie

In dit artikel zagen we drie fouten die ontwikkelaars van iOS-apps maken die codering misschien gemakkelijker lijken te maken, maar op de lange termijn eigenlijk veel meer werk kosten. 

Vergeet niet dat het bouwen van een app slechts een deel van de uitdaging is - u moet ook fouten oplossen, functies toevoegen en de code delen met andere ontwikkelaars. Door het volgen van best practices zoals het gebruik van constanten, het correct omgaan met optionals en het gebruik van architecturale patronen, wordt uw app eenvoudiger te bouwen en gemakkelijker te onderhouden.

Kijk terwijl je hier bent naar enkele van onze andere berichten over de ontwikkeling van iOS-apps!