{"id":16,"date":"2025-09-26T17:34:39","date_gmt":"2025-09-26T17:34:39","guid":{"rendered":"https:\/\/erickibanezdev.com\/blog\/?p=16"},"modified":"2025-09-26T17:49:22","modified_gmt":"2025-09-26T17:49:22","slug":"s-principio-de-responsabilidad-unica","status":"publish","type":"post","link":"https:\/\/erickibanezdev.com\/blog\/s-principio-de-responsabilidad-unica\/","title":{"rendered":"S &#8211; Principio de Responsabilidad \u00danica"},"content":{"rendered":"\n<p>En alg\u00fan momento nos ha tocado ver alguna parte de c\u00f3digo dentro de alg\u00fan software donde pensamos \u201c\u00bfQu\u00e9 es esto?\u201d, incluso cuando ese c\u00f3digo fue realizado por nosotros mismos\u2026<\/p>\n\n\n\n<p>Spaghettis por doquier, un mont\u00f3n de funcionalidades juntas todo en un mismo archivo, clase o m\u00e9todo haci\u00e9ndolo dif\u00edcil de entender..<\/p>\n\n\n\n<p>En este post veremos el primero de los principios SOLID que corresponde a la letra \u201cS\u201d haciendo referencia al principio de responsabilidad \u00fanica o en ingl\u00e9s \u201c<strong>Single Responsibility Principle<\/strong>\u201d el cual menciona que \u201cCada m\u00f3dulo del Software debe tener una y solo una raz\u00f3n para cambiar\u201d donde un m\u00f3dulo se entiende como una clase o funci\u00f3n que, en nuestro software quienes definen que y c\u00f3mo se comporta la aplicaci\u00f3n.<\/p>\n\n\n\n<p>Estas clases deben representar correctamente alguna tarea en espec\u00edfico junto con su forma de hacerlo. Una clase con m\u00e1s de un prop\u00f3sito estar\u00eda agregando m\u00e1s complejidad innecesaria adem\u00e1s de volver a nuestro software mas dif\u00edcil de mantener y probar. El rendimiento de nuestra aplicaci\u00f3n tambi\u00e9n puede verse afectado debido a ello, sin mencionar que cambios en el c\u00f3digo pudieran afectar m\u00e1s sectores del software adem\u00e1s de lo que pretendemos modificar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"366\" height=\"245\" src=\"https:\/\/erickibanezdev.com\/blog\/wp-content\/uploads\/2025\/09\/1-srp.jpg\" alt=\"Pieza de ajedrez sola sobre una mesa\" class=\"wp-image-17\" srcset=\"https:\/\/erickibanezdev.com\/blog\/wp-content\/uploads\/2025\/09\/1-srp.jpg 366w, https:\/\/erickibanezdev.com\/blog\/wp-content\/uploads\/2025\/09\/1-srp-300x201.jpg 300w\" sizes=\"auto, (max-width: 366px) 100vw, 366px\" \/><\/figure>\n\n\n\n<p>Pero, \u00bfA qu\u00e9 nos referimos con responsabilidad?<\/p>\n\n\n\n<p>Cuando hablamos de responsabilidad nos referimos a alguna actividad o tarea en particular, estas se encuentran separadas entre s\u00ed y no dependen ni se preocupan por lo que hace la otra y que adem\u00e1s pudiera cambiar en el futuro por diversas razones (cambio en los requerimientos).<\/p>\n\n\n\n<p>Cuando dos o m\u00e1s tareas est\u00e1n mezcladas en la misma clase, haciendo m\u00e1s dif\u00edcil para el desarrollador realizar cambios, se dice que tenemos un acoplamiento elevado. Por el contrario, al tener esta l\u00f3gica mejor separada de una forma m\u00e1s modular podemos decir que tenemos un bajo acoplamiento, lo cual vendr\u00eda a ser uno de nuestros objetivos.<\/p>\n\n\n\n<p>Cuando construimos nuestras clases, debemos revisar qu\u00e9 y qu\u00e9 no deber\u00eda estar all\u00ed, si los elementos que est\u00e1n en una misma clase no tienen relaci\u00f3n probablemente no pertenecen all\u00ed de manera que si por esta raz\u00f3n tenemos que enlazar clases entre s\u00ed, nos llevar\u00eda a tener m\u00e1s acoplamiento.<\/p>\n\n\n\n<p>Como ejemplos de responsabilidades tenemos: el loggeo de la aplicaci\u00f3n, el manejo de los datos, etc.<\/p>\n\n\n\n<p>Tener nuestra aplicaci\u00f3n un poco m\u00e1s modular, separando las responsabilidades nos ayuda a tener un producto m\u00e1s mantenible, que se puede probar de mejor manera y mucho m\u00e1s entendible.<\/p>\n\n\n\n<p>Ten en cuenta que cada caso, cada software es diferente. Por lo que la implementaci\u00f3n de este, y los dem\u00e1s principios no ser\u00e1 la misma o incluso puede no existir, no es como que exista un reglamento que se deba seguir, si no m\u00e1s bien puedes verlo como una serie de recomendaciones que puedes ayudarte a obtener software de mejor calidad y su la manera en que se implementa queda sujeta a cada desarrollador.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En alg\u00fan momento nos ha tocado ver alguna parte de c\u00f3digo dentro de alg\u00fan software donde pensamos \u201c\u00bfQu\u00e9 es esto?\u201d, incluso cuando ese c\u00f3digo fue realizado por nosotros mismos\u2026 Spaghettis por doquier, un mont\u00f3n de funcionalidades juntas todo en un mismo archivo, clase o m\u00e9todo haci\u00e9ndolo dif\u00edcil de entender.. En este post veremos el primero [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[1,3],"tags":[8,9,7,10],"class_list":["post-16","post","type-post","status-publish","format-standard","hentry","category-blog","category-desarrollo","tag-desarrollo","tag-practicas","tag-software","tag-solid"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/erickibanezdev.com\/blog\/wp-json\/wp\/v2\/posts\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/erickibanezdev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/erickibanezdev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/erickibanezdev.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/erickibanezdev.com\/blog\/wp-json\/wp\/v2\/comments?post=16"}],"version-history":[{"count":1,"href":"https:\/\/erickibanezdev.com\/blog\/wp-json\/wp\/v2\/posts\/16\/revisions"}],"predecessor-version":[{"id":18,"href":"https:\/\/erickibanezdev.com\/blog\/wp-json\/wp\/v2\/posts\/16\/revisions\/18"}],"wp:attachment":[{"href":"https:\/\/erickibanezdev.com\/blog\/wp-json\/wp\/v2\/media?parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/erickibanezdev.com\/blog\/wp-json\/wp\/v2\/categories?post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/erickibanezdev.com\/blog\/wp-json\/wp\/v2\/tags?post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}