{"id":34600,"date":"2018-01-11T12:19:58","date_gmt":"2018-01-11T12:19:58","guid":{"rendered":"https:\/\/stage.cactus-now.com\/cactus-nieuws\/ios-best-practices-architecture\/"},"modified":"2026-06-01T17:12:07","modified_gmt":"2026-06-01T14:12:07","slug":"ios-best-practices-architecture","status":"publish","type":"post","link":"https:\/\/stage.cactus-now.com\/nl\/blog\/ios-best-practices-architecture\/","title":{"rendered":"iOS best practices, deel 3: architectuur"},"content":{"rendered":"\n<div class=\"section-inner sectionLayout--insetColumn\">\n<p id=\"4790\" class=\"graf graf--p graf-after--h3\">Als vervolg op <a href=\"https:\/\/stage.cactus-now.com\/blog\/2018\/01\/08\/swift-code-style\/\">Deel 2: Swift Codestijl<\/a><\/p>\n<p id=\"eeff\" class=\"graf graf--p graf-after--p\"><em>Geloof nooit in \u2018laten we het snel doen en het dan opnieuw bedenken\u2019.<\/em><\/p>\n<\/div>\n\n\n<div class=\"section-inner sectionLayout--insetColumn\">\n<p>Laten we het hebben over algemene architectuurontwerppatronen.<\/p>\n<p>We zijn begonnen met VIPER-ontwerp. Waarom?<br>Het is de beste gewoonte om uw systeem op te delen in een heleboel kleine blokken met \u00e9\u00e9n verantwoordelijkheid\u200a\u2013\u200ahet is eenvoudig en kost niet veel tijd.<br>Veel mensen schrijven theoretisch materiaal over VIPER en suggereren dat een ontwikkelingsproces met schone architectuur veel tijd kost.<\/p>\n<p>Maar het is niet waar.<\/p>\n<p>Waarom?<\/p>\n<ul>\n<li><strong>Ten eerste<\/strong>\u2013\u200aWe kunnen veel herbruikbare code genereren met <a href=\"https:\/\/github.com\/rambler-digital-solutions\/Generamba\">Generamba-codegenerator<\/a> en onze <a href=\"https:\/\/github.com\/Shopify\/liquid\">eigen sjablonen<\/a>. *In onze volgende artikelen zullen we ontdekken hoe u met Generamba kunt werken.<\/li>\n<li><strong>Ten tweede<\/strong>\u2013\u200aAls we met VIPER werken, ontwikkelen we onze applicatie volgens de S.O.L.I.D.-principes. Dit betekent dat elk onderdeel \u00e9\u00e9n verantwoordelijkheid heeft. Componenten zijn afhankelijk van abstracties. Code is afhankelijk van klassen\u200a\u2013\u200aze worden in moduleconfigurators ge\u00efnjecteerd. Hierdoor beschikken we over een flexibel systeem dat snel kan worden uitgebreid en aangepast.<\/li>\n<li><strong>Ten derde<\/strong>\u2013\u200aAl onze modules hebben een uitstekende codedekkingskwaliteit. Dit betekent dat we de mogelijkheid hebben om onze codegeuren\/bugs tijdens de ontwikkeling te detecteren en deze v\u00f3\u00f3r de QA-ronde op te lossen. Ook dit levert een aanzienlijke tijdsbesparing op.<\/li>\n<\/ul>\n<p>Ok\u00e9, laten we elk onderdeel ontdekken.<\/p>\n<\/div>\n\n\n<figure class=\"wp-block-image alignnone is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/01\/IOS-architecture.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/01\/IOS-architecture.png\" alt=\"IOS architecture\" class=\"wp-image-1627\" width=\"790\"\/><\/a><figcaption>VIPER\u200a\u2014\u200aSchone architectuur<\/figcaption><\/figure>\n\n\n<ul class=\"wp-block-list\"><li><strong>Bekijk<\/strong>\u2013\u200aDit is een UIViewController, die mogelijkheden heeft om gebruikersinteractie te bekijken en af te handelen. View heeft 2 protocollen.<br>Bekijk invoer \u2013 ge\u00efmplementeerd in View Layer en aangeroepen vanuit Presenter Layer.<br>*Toon informatie over weergave, <em>g. toonVooruitgang()<\/em><br>Uitvoer bekijken\u200a\u2013\u200age\u00efmplementeerd in Presenter Layer en aangeroepen vanuit View Layer.<br>*Informeer presentator over gebruikersacties, <em><em><em>bijv. addNewItem()<\/em><\/em><\/em><br><\/li><li><strong>Presentator<\/strong>\u2013\u200aDit is een klasse die communiceert met View, Router en Interactor met behulp van de volgende protocollen.<br>Bekijk uitvoer\u200a\u2013\u200akijk naar de weergavesectie.<br>Interactor-uitvoer\u200a\u2013\u200age\u00efmplementeerd in Presenter Layer en aangeroepen vanuit Interactor Layer.<br>* Houd de presentator op de hoogte van updates, <em>g. dataDidLoad()<\/em><br>Bekijk invoer\u200a\u2013\u200akijk naar de weergavesectie.<br>Interactor-invoer\u200a\u2013\u200age\u00efmplementeerd in Interactor Layer en aangeroepen vanuit Presenter Layer.<br>*Vraagt om updates, <em>bijv. laadItems()<br><\/em> Routerinvoer\u200a\u2013\u200age\u00efmplementeerd in Router Layer en oproep vanuit Presenter Layer.<br>*Navigeer tussen modules, <em><em><em>bijv. toonDetailsModule()<br><\/em><\/em><\/em><\/li><li><strong>Interactor<\/strong>\u2013\u200aDit is een klas die communiceert met de presentator en entiteiten. Interactor heeft 2 protocollen.<br>Interactorinvoer\u200a\u2013\u200akijk naar het gedeelte Presentator.<br>Interactoruitvoer\u200a\u2013\u200akijk naar het gedeelte Presentator.<br><\/li><li><strong>Entiteit<\/strong>\u2013\u200aDit omvat elke gegevensrepresentatie zoals CoreData Entity, Realm Object, enz.<br><\/li><li><strong>Configurator<\/strong>\u2013\u200aNog \u00e9\u00e9n ding.<br>VIPER heeft veel componenten waar we tussenin moeten injecteren.<br>Configurator injecteert lagen ertussen.<\/li><\/ul>\n\n\n<p>Dit was een korte handleiding voor de schone architectuur VIPER.<\/p>\n\n\n<p><strong>Lees verder:<\/strong><a href=\"https:\/\/stage.cactus-now.com\/blog\/2018\/01\/16\/ios-best-practices-s-o-l-i-d\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">iOS Beste praktijken. Deel 4: S.O.L.I.D. >>><\/a><\/p>\n\n\n<hr class=\"wp-block-separator is-style-dots\"\/>\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/02\/Cactus2600-1-e1570193954328.jpg\" alt=\" class=\"wp-image-7917\" width=\"150\" height=\"195\"\/><\/figure><\/div>\n\n\n<p><a href=\"https:\/\/www.linkedin.com\/in\/maksimvialykh\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Maxim Vialykh<\/a> is CactusSoft iOS technisch hoofd.<\/p>\n\n\n<p><strong>Technische achtergrond<\/strong><br>Programmeertalen: Swift, Objective-C, Java<br>Technologie\u00ebn en platforms: iOS, Android, Windows Phone, Amazon S3, Google Cloud, Google APIs, Facebook APIs<br>Kaders: PhoneGap, Xamarin<br>Tools: Invision, SVN, Git, PhoneGap, Titanium, Xamarin, Sketch, xCode, IntelliJ IDEA<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Als vervolg op Deel 2: Swift Codestijl Geloof nooit in \u2018laten we het snel doen en het dan opnieuw bedenken\u2019. Laten we het hebben over algemene architectuurontwerppatronen. We zijn begonnen met VIPER-ontwerp. Waarom?Het is de beste gewoonte om uw systeem op te delen in een heleboel kleine blokken met \u00e9\u00e9n verantwoordelijkheid\u200a\u2013\u200ahet is eenvoudig en kost [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":5591,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[637],"tags":[],"class_list":["post-34600","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/posts\/34600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/comments?post=34600"}],"version-history":[{"count":0,"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/posts\/34600\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/media\/5591"}],"wp:attachment":[{"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/media?parent=34600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/categories?post=34600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/tags?post=34600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}