{"id":34605,"date":"2018-01-16T18:19:33","date_gmt":"2018-01-16T18:19:33","guid":{"rendered":"https:\/\/stage.cactus-now.com\/cactus-nieuws\/ios-best-practices-s-o-l-i-d\/"},"modified":"2026-06-01T17:12:07","modified_gmt":"2026-06-01T14:12:07","slug":"ios-best-practices-s-o-l-i-d","status":"publish","type":"post","link":"https:\/\/stage.cactus-now.com\/nl\/blog\/ios-best-practices-s-o-l-i-d\/","title":{"rendered":"iOS best practices, deel 4: S.O.L.I.D."},"content":{"rendered":"<p>Als vervolg op <a href=\"https:\/\/stage.cactus-now.com\/blog\/2018\/01\/11\/ios-best-practices-architecture\/\">Deel 3: Architectuur<\/a> Laten we het hebben over de S.O.L.I.D.-principes en hoe deze kunnen worden toegepast in Swift. <strong>S<\/strong><strong>\u200a<\/strong><strong>\u2013<\/strong><strong>\u200a<\/strong><strong>Het principe van gezamenlijke verantwoordelijkheid<\/strong> Een te sterke klasse <a href=\"https:\/\/gist.githubusercontent.com\/MaksimVialykh\/c1b9cb5409e38f905b6d58f394f6adb4\/raw\/cbc658f6fd39dd4bbc03d5161dba2ccf2ae2d917\/StrongLoginPresenter.swift\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-1644\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/01\/M1.png\" alt=\"S.O.L.I.D. SWIFT\" width=\"668\" height=\"399\"><\/a> Deze klasse werkt met logica, doet netwerkverzoeken en doet navigatiewerk.<br \/>\nLaten we het dus vereenvoudigen en herwerken met behulp van <strong>Het principe van gezamenlijke verantwoordelijkheid<\/strong>. <a href=\"https:\/\/gist.githubusercontent.com\/MaksimVialykh\/812bbc5328cb324e9bcf76ffbe42f753\/raw\/9acd375b3b078d2a38436b7c7e1318860c3ecfbf\/SingleResponsibility.swift\"><img decoding=\"async\" class=\"alignnone size-full wp-image-1642\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/01\/MaxCode.png\" alt=\"S.O.L.I.D.\"><\/a> <strong>O<\/strong><strong>\u200a<\/strong><strong>\u2013<\/strong><strong>\u200a<\/strong><strong>Open-gesloten principe (OCP)<\/strong> Het is een principe voor objectgeori\u00ebnteerd ontwerp dat voor het eerst werd beschreven door Bertrand Meyer en dat zegt dat <em>\u201csoftware-entiteiten (klassen, modules, functies, enz.) moeten open zijn voor uitbreiding, maar gesloten voor wijziging\u201d<\/em>. <em>Ten eerste<\/em><em>\u200a<\/em><em>\u2013<\/em><em>\u200a<\/em><em>protocolabstracties cre\u00ebren,<br \/>\nDan<\/em><em>\u200a<\/em><em>\u2013<\/em><em>\u200a<\/em><em>definitieve implementatie cre\u00ebren,<br \/>\nDoen<\/em><em>\u200a<\/em><em>\u2013<\/em><em>\u200a<\/em><em>extensies,<br \/>\nDoe het niet<\/em><em>\u200a<\/em><em>\u2013<\/em><em>\u200a<\/em><em>veranderingen.<\/em> <a href=\"https:\/\/gist.githubusercontent.com\/MaksimVialykh\/21065d7f4b245f681e6a903d9c577b6a\/raw\/c062c27630378217e8719e3d9a78b5e179f61852\/open-closed.swift\"><img decoding=\"async\" class=\"alignnone wp-image-1645\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/01\/M2.png\" alt=\"SWIFT S.O.L.I.D.\" width=\"668\" height=\"882\"><\/a> <strong>L<\/strong><strong>\u200a<\/strong><strong>\u2013<\/strong><strong>\u200a<\/strong><strong>Liskov-substitutieprincipe (LSP)<\/strong> Afgeleide klassen moeten vervangbaar zijn voor hun basisklassen. <a href=\"https:\/\/gist.githubusercontent.com\/MaksimVialykh\/ccff9fc4a09ae3f02a29eac8acac2b92\/raw\/0eb305112a1c957be0ca84aee6573fa0506b6104\/liskovPrinciple.swift\"><img decoding=\"async\" class=\"alignnone wp-image-1646\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/01\/M3.png\" alt=\"swift s.o.l.i.d.<\/p>\n<p>&#8221; width=&#8221;668&#8243; height=&#8221;1056&#8243;><\/a> <strong>ik<\/strong><strong>\u200a<\/strong><strong>\u2013<\/strong><strong>\u200a<\/strong><strong>Interface-segregatieprincipe (ISP)<\/strong> Maak eenvoudige abstracties die klanten nodig hebben. <a href=\"https:\/\/gist.githubusercontent.com\/MaksimVialykh\/100c85f78b41226df27620f845112709\/raw\/07bc42d9dabec1e409d4e50582d1848452357cd4\/interfaceSegregation.swift\"><img decoding=\"async\" class=\"alignnone size-full wp-image-1647\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/01\/M5.png\" alt=\"S.O.L.I.D. principles\"><\/a> <strong>D<\/strong><strong>\u200a<\/strong><strong>\u2013<\/strong><strong>\u200a<\/strong><strong>Afhankelijkheidsinversieprincipe<\/strong> Vertrouw op abstracties, niet op specifieke klassen\/structuren. <a href=\"https:\/\/gist.githubusercontent.com\/MaksimVialykh\/aecc301449b6d3b32fe928fa4d0fb006\/raw\/cf41657aa2d67e08339d28de2fd9b296ddeef7e7\/dependencyInversion.swift\"><img decoding=\"async\" class=\"alignnone wp-image-1648\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/01\/M6.png\" alt=\"Swift SOLID\" width=\"668\" height=\"1489\"><\/a> <em>Abstracties overal! Onthoud het!<\/em> Dit was een korte handleiding over het oefenen van S.O.L.I.D. in Swift-code. <strong>Lees meer<\/strong>: <a href=\"https:\/\/stage.cactus-now.com\/blog\/2018\/01\/08\/swift-code-style\/\">iOS Beste praktijken. Deel 2: Swift Codestijl &gt;&gt;&gt;<\/a> <\/p>\n<hr>\n<p> <a href=\"https:\/\/www.linkedin.com\/in\/maksimvialykh\/\">Maxim Vialykh<\/a><a href=\"https:\/\/www.linkedin.com\/in\/maksimvialykh\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1551\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2018\/01\/Cactus2600-1.jpg\" alt=\"vialyx\" width=\"180\" height=\"203\"><\/a> is CactusSoft iOS Tech Lead.<\/p>\n<article class=\"single-post-content\">\n<div class=\"single-post-inner\"> <strong>Technische achtergrond<\/strong> Programmeertalen: Swift, Objective-C, Java<br \/>\nTechnologie\u00ebn en platforms: iOS, Android, Windows Phone, Amazon S3, Google Cloud, Google APIs, Facebook APIs<br \/>\nKaders: PhoneGap, Xamarin<br \/>\nTools: Invision, SVN, Git, PhoneGap, Titanium, Xamarin, Sketch, xCode, IntelliJ IDEA<\/div>\n<\/article>\n<aside class=\"single-post-sidebar\">\n<h3><\/h3>\n<\/aside>\n","protected":false},"excerpt":{"rendered":"<p>Als vervolg op Deel 3: Architectuur Laten we het hebben over de S.O.L.I.D.-principes en hoe deze kunnen worden toegepast in Swift. S\u200a\u2013\u200aHet principe van gezamenlijke verantwoordelijkheid Een te sterke klasse Deze klasse werkt met logica, doet netwerkverzoeken en doet navigatiewerk. Laten we het dus vereenvoudigen en herwerken met behulp van Het principe van gezamenlijke verantwoordelijkheid. [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":5594,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[637],"tags":[],"class_list":["post-34605","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\/34605","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=34605"}],"version-history":[{"count":0,"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/posts\/34605\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/media\/5594"}],"wp:attachment":[{"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/media?parent=34605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/categories?post=34605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stage.cactus-now.com\/nl\/wp-json\/wp\/v2\/tags?post=34605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}