{"id":228719,"date":"2022-10-25T10:21:00","date_gmt":"2022-10-25T07:21:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228719"},"modified":"2022-11-09T04:08:09","modified_gmt":"2022-11-09T01:08:09","slug":"multiples-objetos-escribiendo-datos-como-evitar-esto","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/multiples-objetos-escribiendo-datos-como-evitar-esto\/","title":{"rendered":"M\u00faltiples objetos escribiendo datos: c\u00f3mo evitar esto"},"content":{"rendered":"\n<p>Conoce esos momentos en los que est\u00e1 trabajando en un programa, y \u200b\u200bhay algunos lugares en su c\u00f3digo que, seg\u00fan los requisitos o un error que se manifiesta de alguna manera, est\u00e1 directamente relacionado con el hecho de que tiene m\u00faltiples objetos escribiendo datos. al mismo almac\u00e9n de datos? Eso no es bueno.<\/p>\n<p>Esa es una manera terrible de comenzar una publicaci\u00f3n. D\u00e9jame intentarlo de nuevo.<\/p>\n<h2>M\u00faltiples objetos escribiendo datos<\/h2>\n<p>Digamos que est\u00e1 trabajando en un programa y una de las cosas que hace el c\u00f3digo es actualizar un contador en alg\u00fan lugar de la base de datos para rastrear cu\u00e1ntos cambios han ocurrido durante un peque\u00f1o per\u00edodo de tiempo.<\/p>\n<p>El problema: tiene varios lugares en el c\u00f3digo que est\u00e1n actualizando este contador.<\/p>\n<p>M\u00faltiples objetos escribiendo datos (en caso de que mi letra sea tan ilegible como parece).<\/p>\n<p>No creo que muchos de nosotros nos propusi\u00e9ramos escribir un c\u00f3digo como este, pero sucede, y cuando sucede, termina teniendo todos estos efectos secundarios que generan todo tipo de comportamiento raro. (No conozco el t\u00e9rmino acad\u00e9mico oficial para ello, y no me refiero a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">SECO<\/a>, pero estoy de acuerdo con el &quot;comportamiento funky&quot; para esta publicaci\u00f3n).<\/p>\n<p>Sabemos intuitivamente que deber\u00edamos tener un solo lugar en el que todo esto suceda, los factores externos, ya sea un aumento del alcance, un malentendido de nuestra parte para comprender los requisitos, o lo que sea, generan una codificaci\u00f3n deficiente.<\/p>\n<p>Entonces, tenemos todas estas <a href=\"https:\/\/wordpress.mediadoma.com\/es\/tipos-de-publicaciones-de-wordpress-una-abstraccion-para-las-entidades\/\" title=\"entidades\">entidades<\/a> en todo nuestro sistema, cada una de las cuales est\u00e1 hablando con un solo punto en nuestra base de datos (o cualquier almacenamiento de datos que desee), pero ninguna de ellas es consciente de que otros est\u00e1n hablando con ellos.<\/p>\n<h2>Establecer l\u00edmites<\/h2>\n<p>Podemos tratar de combatir esto con condicionales y otras cosas, pero solo lo estamos empeorando. Entonces, \u00bfqu\u00e9 se supone que debemos hacer?<\/p>\n<p>S\u00e9 que, como sucede con muchas cosas en la programaci\u00f3n, hay una variedad de formas de resolver esto, pero tal vez uno de los primeros pasos de la refactorizaci\u00f3n es tener una clase responsable de publicar actualizaciones en el almac\u00e9n de datos.<\/p>\n<p>De esa manera, podemos pasar de la ilustraci\u00f3n de arriba a algo como esto:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167733-61e7a7cc3a1aa.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167733-61e7a7cc3a1aa.png\" alt=\"M\u00faltiples objetos escribiendo datos: c\u00f3mo evitar esto\" ><\/a><\/p>\n<p>M\u00faltiples objetos escribiendo datos: env\u00edelos a una especie de mediador.<\/p>\n<p>Es decir, todas las entidades hacen comunidad con este objeto y este objeto, y solo este objeto puede leer y escribir datos en la base de datos.<\/p>\n<p>Hay algunos <a href=\"https:\/\/sourcemaking.com\/design_patterns\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">patrones de dise\u00f1o<\/a> que encajar\u00edan con este problema en particular, pero eso est\u00e1 fuera del alcance de esta publicaci\u00f3n. En cambio, el punto que estoy tratando de hacer es que si te encuentras frente a un problema de:<\/p>\n<ul>\n<li>Las entidades est\u00e1n escribiendo datos en el almac\u00e9n de datos,<\/li>\n<li>M\u00faltiples entidades lo est\u00e1n haciendo,<\/li>\n<li>Y est\u00e1 generando consecuencias no deseadas,<\/li>\n<\/ul>\n<p>Luego intente crear una clase o un conjunto de clases estrictamente responsables de leer y escribir datos. Solo deje que la informaci\u00f3n pase a trav\u00e9s de esas clases en lugar de que varias clases manipulen los datos.<\/p>\n<p>Hace que sea m\u00e1s f\u00e1cil de probar, hace que sea m\u00e1s f\u00e1cil de depurar y, en \u00faltima instancia, hace que sea m\u00e1s f\u00e1cil de leer.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tener varios objetos escribiendo datos en un \u00fanico almac\u00e9n de datos en varios lugares tiene efectos secundarios negativos. Aqu\u00ed hay una manera de arreglar eso.<\/p>\n","protected":false},"author":1,"featured_media":221243,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[716],"tags":[1172],"class_list":["post-228719","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=228719"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228719\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/221243"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=228719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=228719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=228719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}