{"id":34638,"date":"2018-01-08T08:44:01","date_gmt":"2018-01-08T08:44:01","guid":{"rendered":"https:\/\/stage.cactus-now.com\/noticias-de-cactus\/swift-code-style\/"},"modified":"2026-06-01T17:11:41","modified_gmt":"2026-06-01T14:11:41","slug":"ios-best-practices-part-2-swift-code-style","status":"publish","type":"post","link":"https:\/\/stage.cactus-now.com\/es\/nuestro-blog\/ios-best-practices-part-2-swift-code-style\/","title":{"rendered":"iOS Best Practices. Part 2: Swift Code Style"},"content":{"rendered":"<h4><span style=\"color: #000000;\">El art\u00edculo anterior<\/span>: <a href=\"https:\/\/stage.cactus-now.com\/?p=1553&amp;preview=true\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Parte 1: Objective-C Code Style <\/a><\/h4>\n\n<p>En este art\u00edculo aprender\u00e1s c\u00f3mo escribir c\u00f3digo para aplicaciones m\u00f3viles en lenguaje Swift.<\/p>\n\n<blockquote class=\"wp-block-quote\"><p><strong>Sobre NOSOTROS:<\/strong> Desde 2007, <span style=\"color: #333333;\">CactusSoft<\/span> ha desarrollado cientos de <span style=\"color: #333333;\">aplicaciones m\u00f3viles<\/span>. Ofrecemos <span style=\"color: #333333;\">ingenier\u00eda de software m\u00f3vil<\/span> de ciclo completo que tambi\u00e9n incorpora la implementaci\u00f3n del lado del servidor. Con nuestra s\u00f3lida experiencia en Android, iOS, Windows Phone y HTML5, entregamos <span style=\"color: #333333;\">aplicaciones m\u00f3viles nativas<\/span> de calidad superior y <span style=\"color: #333333;\">soluciones multiplataforma<\/span>.<\/p><\/blockquote>\n\n<p>El <strong>espaciado<\/strong> correctamente elegido es lo que ayuda a organizar tu c\u00f3digo.<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-1.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-1.jpg\" alt=\"Ejemplo de espaciado en Swift\" class=\"wp-image-7996\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-1.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-1-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-1-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>Sin comentarios\u2026 Escribe c\u00f3digo claro siguiendo los principios S.O.L.I.D.<\/p>\n\n<p>Utiliza el Contexto de Tipo Inferido (Type Inferred Context), una potente caracter\u00edstica de Swift.<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-2.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-2.jpg\" alt=\"Ejemplo de Type Inferred Context en Swift\" class=\"wp-image-7993\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-2.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-2-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-2-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>Los protocolos deben implementarse en extensiones separadas.<\/p>\n\n<p>La clase debe incluir solo el c\u00f3digo que describe la funcionalidad interna.<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-3.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-3.jpg\" alt=\"Implementaci\u00f3n de protocolos en extensiones\" class=\"wp-image-7990\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-3.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-3-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-3-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>No acumules c\u00f3digo no utilizado. Siempre puedes restaurar este c\u00f3digo usando el sistema de control de versiones.<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-4.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-4.jpg\" alt=\"Eliminaci\u00f3n de c\u00f3digo no utilizado\" class=\"wp-image-7987\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-4.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-4-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-4-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>Clases vs Estructuras. Es tu elecci\u00f3n.<br>\nPor lo tanto, supongo que deber\u00edamos preferir las estructuras a las clases. Este camino proporciona beneficios para la gesti\u00f3n de la memoria.<br>\nPor supuesto, tenemos muchos casos donde debemos usar clases.<\/p>\n\n<p>Usa az\u00facar sint\u00e1ctico (syntactic sugar) en las propiedades computadas (computed properties).<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-5.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-5.jpg\" alt=\"Az\u00facar sint\u00e1ctico en propiedades computadas\" class=\"wp-image-7984\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-5.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-5-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-5-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>No te olvides de <strong><em>final<\/em><\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-6.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-6.jpg\" alt=\"Uso de la palabra clave final en Swift\" class=\"wp-image-7981\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-6.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-6-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-6-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>Re\u00fane los valores globales en un archivo de Constantes separado.<br>\n<em>*Puedes usar estructuras con private init() como alternativa a enum.<\/em><\/p>\n\n<p>Optimiza las condiciones para el desempaquetado opcional (optional unwrap): escribe todos los argumentos secuencialmente en una sola condici\u00f3n.<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-7.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-7.jpg\" alt=\"Optimizaci\u00f3n de condiciones para optionals\" class=\"wp-image-7978\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-7.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-7-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-7-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>Usa la inicializaci\u00f3n <strong><em>lazy<\/em><\/strong> para optimizar la gesti\u00f3n de memoria.<\/p>\n\n<p>De nuevo, considera <strong>Type Inference<\/strong> y <strong>Syntactic Sugar<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-8.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-8.jpg\" alt=\"Ejemplo de Type Inference y Syntactic Sugar\" class=\"wp-image-7975\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-8.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-8-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-8-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>Piensa m\u00e1s en la gesti\u00f3n de la memoria.<br>\nExtiende la vida \u00fatil del objeto en un bloque de c\u00f3digo con las construcciones <strong>[weak self]<\/strong>, <strong>guard let \u201cself\u201d = self else { return }<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-9.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-9.jpg\" alt=\"Uso de weak self para gesti\u00f3n de memoria\" class=\"wp-image-7972\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-9.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-9-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-9-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>Escribe condiciones con el \u00ab<strong>Golden Path<\/strong>\u00ab.<br>\nUsa <strong>guard<\/strong> para desempaquetar m\u00faltiples opcionales.<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-10.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-10.jpg\" alt=\"Uso de guard para m\u00faltiples opcionales\" class=\"wp-image-7969\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-10.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-10-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-10-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>\u00bfVienes del mundo Objective-C?<br>\n&#8211; \u00a1S\u00ed!<br>\n<strong>\u00a1Deja de usar punto y coma (;)<\/strong>!<\/p>\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-11.jpg\"><img loading=\"lazy\" decoding=\"async\" decoding=\"async\" src=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-11.jpg\" alt=\"Evitar el uso de punto y coma en Swift\" class=\"wp-image-7966\" width=\"790\" srcset=\"https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-11.jpg 1000w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-11-300x225.jpg 300w, https:\/\/stage.cactus-now.com\/wp-content\/uploads\/2019\/10\/swift-11-768x576.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n<p>Esta fue una breve gu\u00eda sobre el estilo de c\u00f3digo Swift.<\/p>\n\n<p><strong>Continuar leyendo<\/strong>: <a href=\"https:\/\/stage.cactus-now.com\/blog\/2018\/01\/11\/ios-best-practices-architecture\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">iOS Best Practices. Part 3: Architecture<\/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\/01\/Cactus2600-1.jpg\" alt=\"vialyx\" class=\"wp-image-1551\" width=\"150\" height=\"224\"\/><\/figure><\/div>\n\n\n<p><strong>Maxim Vialykh<\/strong> es el L\u00edder T\u00e9cnico de iOS.<\/p>\n\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>","protected":false},"excerpt":{"rendered":"<p>El art\u00edculo anterior: Parte 1: Objective-C Code Style En este art\u00edculo aprender\u00e1s c\u00f3mo escribir c\u00f3digo para aplicaciones m\u00f3viles en lenguaje Swift. Sobre NOSOTROS: Desde 2007, CactusSoft ha desarrollado cientos de aplicaciones m\u00f3viles. Ofrecemos ingenier\u00eda de software m\u00f3vil de ciclo completo que tambi\u00e9n incorpora la implementaci\u00f3n del lado del servidor. Con nuestra s\u00f3lida experiencia en Android, [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":34639,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[700],"tags":[],"class_list":["post-34638","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\/34638","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=34638"}],"version-history":[{"count":0,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/posts\/34638\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/media\/34639"}],"wp:attachment":[{"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/media?parent=34638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/categories?post=34638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stage.cactus-now.com\/es\/wp-json\/wp\/v2\/tags?post=34638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}