{"id":34606,"date":"2018-01-16T18:19:33","date_gmt":"2018-01-16T18:19:33","guid":{"rendered":"https:\/\/stage.cactus-now.com\/noticias-de-cactus\/ios-best-practices-s-o-l-i-d\/"},"modified":"2026-06-01T17:11:41","modified_gmt":"2026-06-01T14:11:41","slug":"mejores-practicas-para-ios-parte-4-s-o-l-i-d","status":"publish","type":"post","link":"https:\/\/stage.cactus-now.com\/es\/nuestro-blog\/mejores-practicas-para-ios-parte-4-s-o-l-i-d\/","title":{"rendered":"Mejores Pr\u00e1cticas para iOS. Parte 4: S.O.L.I.D."},"content":{"rendered":"<p>Como continuaci\u00f3n de la <a href=\"https:\/\/stage.cactus-now.com\/es\/nuestro-blog\/ios-best-practices-architecture\/\">Parte 3: Arquitectura<\/a><\/p>\n<p>Hablemos de los principios S.O.L.I.D. y c\u00f3mo se pueden aplicar en Swift.<\/p>\n<p><strong>S<\/strong><strong>\u200a<\/strong><strong>\u2013<\/strong><strong>\u200a<\/strong><strong>El Principio de Responsabilidad \u00danica (The Single Responsibility Principle)<\/strong><\/p>\n<p>Clase demasiado fuerte<\/p>\n<p><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><\/p>\n<p>Esta clase trabaja con l\u00f3gica, realiza solicitudes de red y hace trabajo de navegaci\u00f3n.<br \/>\nPor lo tanto, simplifiqu\u00e9mosla y reelabor\u00e9mosla usando <strong>El Principio de Responsabilidad \u00danica<\/strong>.<\/p>\n<p><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><\/p>\n<p><strong>O<\/strong><strong>\u200a<\/strong><strong>\u2013<\/strong><strong>\u200a<\/strong><strong>El Principio Abierto-Cerrado (Open-Closed Principle &#8211; OCP)<\/strong><\/p>\n<p>Es un principio para el dise\u00f1o orientado a objetos descrito por primera vez por Bertrand Meyer que dice que <em>\u00ablas entidades de software (clases, m\u00f3dulos, funciones, etc.) deben estar abiertas para la extensi\u00f3n, pero cerradas para la modificaci\u00f3n\u00bb<\/em>.<\/p>\n<p><em>Primero<\/em><em>\u200a<\/em><em>\u2013<\/em><em>\u200a<\/em><em>crear abstracciones de protocolo,<br \/>\nLuego<\/em><em>\u200a<\/em><em>\u2013<\/em><em>\u200a<\/em><em>crear la implementaci\u00f3n final,<br \/>\nHacer<\/em><em>\u200a<\/em><em>\u2013<\/em><em>\u200a<\/em><em>extensiones,<br \/>\nNo hacer<\/em><em>\u200a<\/em><em>\u2013<\/em><em>\u200a<\/em><em>cambios.<\/em><\/p>\n<p><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><\/p>\n<p><strong>L<\/strong><strong>\u200a<\/strong><strong>\u2013<\/strong><strong>\u200a<\/strong><strong>El Principio de Sustituci\u00f3n de Liskov (Liskov Substitution Principle &#8211; LSP)<\/strong><\/p>\n<p>Las clases derivadas deben ser sustituibles por sus clases base.<\/p>\n<p><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.\" width=\"668\" height=\"1056\"><\/a><\/p>\n<p><strong>I<\/strong><strong>\u200a<\/strong><strong>\u2013<\/strong><strong>\u200a<\/strong><strong>El Principio de Segregaci\u00f3n de la Interfaz (Interface Segregation Principle &#8211; ISP)<\/strong><\/p>\n<p>Crea abstracciones simples que los clientes necesiten.<\/p>\n<p><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=\"Principios S.O.L.I.D.\"><\/a><\/p>\n<p><strong>D<\/strong><strong>\u200a<\/strong><strong>\u2013<\/strong><strong>\u200a<\/strong><strong>El Principio de Inversi\u00f3n de Dependencias (Dependency Inversion Principle)<\/strong><\/p>\n<p>Depende de abstracciones, no de clases\/estructuras espec\u00edficas.<\/p>\n<p><a href=\"https:\/\/gist.githubusercontent.com\/MaksimVialykh\/aecc301449b6d3b32fe928fa4d0fb006\/raw\/cf41657aa2d67e08339d28de2fd9b296ddeef7e7\/dependencyInversion.swift\"><img loading=\"lazy\" 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><\/p>\n<p><em>\u00a1Abstracciones en todas partes! \u00a1Recu\u00e9rdalo!<\/em><\/p>\n<p>Esta fue una breve gu\u00eda sobre la pr\u00e1ctica de S.O.L.I.D. en c\u00f3digo Swift.<\/p>\n<p><strong>Leer m\u00e1s<\/strong>: <a href=\"https:\/\/stage.cactus-now.com\/es\/nuestro-blog\/swift-code-style\/\">iOS Best Practices. Part 2: Swift Code Style &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> es el L\u00edder T\u00e9cnico de iOS en CactusSoft.<\/p>\n<article class=\"single-post-content\">\n<div class=\"single-post-inner\">\n<p><strong>Formaci\u00f3n T\u00e9cnica<\/strong><br \/>\nLenguajes de programaci\u00f3n: Swift, Objective-C, Java<br \/>\nTecnolog\u00edas y Plataformas: iOS, Android, Windows Phone, Amazon S3, Google Cloud, Google APIs, Facebook APIs<br \/>\nFrameworks: PhoneGap, Xamarin<br \/>\nHerramientas: Invision, SVN, Git, PhoneGap, Titanium, Xamarin, Sketch, xCode, IntelliJ IDEA<\/p>\n<\/div>\n<\/article>\n<aside class=\"single-post-sidebar\">\n<h3><\/h3>\n<\/aside>\n","protected":false},"excerpt":{"rendered":"<p>Como continuaci\u00f3n de la Parte 3: Arquitectura Hablemos de los principios S.O.L.I.D. y c\u00f3mo se pueden aplicar en Swift. S\u200a\u2013\u200aEl Principio de Responsabilidad \u00danica (The Single Responsibility Principle) Clase demasiado fuerte Esta clase trabaja con l\u00f3gica, realiza solicitudes de red y hace trabajo de navegaci\u00f3n. Por lo tanto, simplifiqu\u00e9mosla y reelabor\u00e9mosla usando El Principio de [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":34607,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[700],"tags":[],"class_list":["post-34606","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nuestro-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/posts\/34606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/comments?post=34606"}],"version-history":[{"count":0,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/posts\/34606\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/media\/34607"}],"wp:attachment":[{"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/media?parent=34606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/categories?post=34606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/tags?post=34606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}