{"id":231064,"date":"2022-12-21T10:49:00","date_gmt":"2022-12-21T07:49:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231064"},"modified":"2022-12-21T10:51:21","modified_gmt":"2022-12-21T07:51:21","slug":"sugerencias-para-organizar-el-codigo-procesal","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/sugerencias-para-organizar-el-codigo-procesal\/","title":{"rendered":"Sugerencias para Organizar el C\u00f3digo Procesal"},"content":{"rendered":"\n<p>Aunque escribo sobre la programaci\u00f3n orientada a objetos y soy fan\u00e1tico de ella, no escribo mucho sobre los tiempos en los que estoy trabajando con una <a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">base de c\u00f3digo procesal<\/a>.<\/p>\n<blockquote>\n<p>La programaci\u00f3n procedimental es un paradigma de programaci\u00f3n, derivado de la programaci\u00f3n estructurada, basado en el concepto de llamada a procedimiento. Los procedimientos, tambi\u00e9n conocidos como rutinas, subrutinas o funciones, simplemente contienen una serie de pasos computacionales a realizar.<\/p>\n<\/blockquote>\n<p>A veces, vengo de esto por los requisitos de un proyecto, a veces es de un proyecto que he heredado, oa veces por otra cosa.<\/p>\n<p>Creo que es importante que, como programadores, no mantengamos un paradigma tan alto que evitemos trabajar con otras formas de escribir c\u00f3digo. Despu\u00e9s de todo, el acto de escribir c\u00f3digo se trata, en esencia, de resolver un problema.<\/p>\n<p>C\u00f3mo se resuelve el problema puede considerarse secundario.<\/p>\n<p>Independientemente, cada vez que estoy trabajando con una base de c\u00f3digo; sin embargo, est\u00e1 escrito, todav\u00eda trato de asegurarme de que est\u00e9 organizado de una manera coherente, lo m\u00e1s f\u00e1cil de seguir posible y que pueda mantenerse a lo largo del tiempo.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160742-61e711c032aea.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-160742-61e711c032aea.png\" alt=\"Sugerencias para Organizar el C\u00f3digo Procesal\"><\/a><\/p>\n<p>Pens\u00e9 en compartir c\u00f3mo me acerco a escribir complementos de WordPress usando programaci\u00f3n procedimental versus programaci\u00f3n orientada a objetos y c\u00f3mo organizo el c\u00f3digo procedimental.<\/p>\n<p>Por lo menos, tal vez esto le d\u00e9 algunas ideas para un proyecto actual o futuro.<\/p>\n<h2>C\u00f3digo Org\u00e1nico Procesal<\/h2>\n<p>Cuando se trata de trabajar con c\u00f3digo de procedimiento, existe un gran potencial para incluir casi todo en un \u00fanico archivo monol\u00edtico.<\/p>\n<p>No soy de este enfoque porque hace que sea m\u00e1s dif\u00edcil encontrar d\u00f3nde reside algo en el archivo (al menos si eres alguien que acaba de entrar en un proyecto).<\/p>\n<p>Con ese fin, estas son las cosas que suelo hacer.<\/p>\n<ol>\n<li><strong>Acciones y filtros separados<\/strong>. Por lo general, tomar\u00e9 todas las acciones y las colocar\u00e9 en un archivo y tomar\u00e9 todos los filtros y los colocar\u00e9 en otro archivo. Tambi\u00e9n es posible separar a\u00fan m\u00e1s estos archivos en subdirectorios (si no tambi\u00e9n en espacios de nombres) en funci\u00f3n de sus \u00e1reas de inter\u00e9s. Por ejemplo, cualquier acci\u00f3n relacionada con el \u00e1rea de administraci\u00f3n puede ir a un subdirectorio de <strong>administraci\u00f3n .<\/strong><\/li>\n<li><strong>Escriba un archivo de depuraci\u00f3n<\/strong>. Normalmente incluyo un script de depuraci\u00f3n simple en un complemento para que pueda mostrar f\u00e1cilmente la informaci\u00f3n de depuraci\u00f3n en la pantalla, escribir en el archivo de registro de depuraci\u00f3n o escribir en ambos. Esto puede ser una conveniencia al menos, pero ayuda a proporcionar una manera de ver f\u00e1cilmente lo que sucede sin necesidad de <a href=\"https:\/\/wordpress.mediadoma.com\/es\/usando-xdebug-con-valet-y-wordpress\/\" title=\"iniciar Xdebug\">iniciar Xdebug<\/a> y recorrer el c\u00f3digo (a menos que sea un problema m\u00e1s complicado).<\/li>\n<li><strong>cargador autom\u00e1tico<\/strong>. Si est\u00e1 utilizando c\u00f3digo de procedimiento, es posible que no est\u00e9 utilizando espacios de <a href=\"https:\/\/wordpress.mediadoma.com\/es\/espacios-de-nombres-y-carga-automatica-en-wordpress\/\" title=\"nombres\">nombres<\/a> en absoluto, pero si es as\u00ed, tambi\u00e9n incluyo un cargador autom\u00e1tico que he escrito para facilitar la inclusi\u00f3n autom\u00e1tica de archivos. Esto es diferente al cargador autom\u00e1tico <a href=\"https:\/\/wordpress.mediadoma.com\/es\/compositor-para-wordpress-parte-1\/\" title=\"que genera Composer\">que genera Composer<\/a>, pero sigue haciendo lo mismo.<\/li>\n<\/ol>\n<p>Obviamente, no hay nada intr\u00ednsecamente complicado en las recomendaciones anteriores. De hecho, dir\u00eda que cualquiera de los anteriores, especialmente el primer paso, puede contribuir en gran medida a mejorar la capacidad de administraci\u00f3n del c\u00f3digo de procedimiento.<\/p>\n<h2>El archivo del complemento principal<\/h2>\n<p>Si opta por hacer todo lo anterior, la versi\u00f3n final del archivo de arranque del complemento deber\u00eda ser realmente simple. De hecho, puede parecer algo tan simple <a href=\"https:\/\/gist.github.com\/tommcfarlin\/777bb0180968134a3c40ebecb241d2ad\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">como esto<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Plugin Name: Acme Plugin\n * Plugin URI:  https:\/\/acmeplugins.com\/acme\n * Description: This is the plugin description.\n * Version:     1.0.0\n * Author:      Acme Plugins Co.\n * Author URI:  https:\/\/acmeplugins.com\/acme\n * License:     GPL-3.0+\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\n * @since   1.0.0\n * @package Acme\n *\/\n\nnamespace Acme;\n\ndefined( 'WPINC') || die;\n\n\/\/ Include the custom autoloader.\nrequire_once __DIR__. '\/inc\/autoload.php';\n\n\/\/ Include action and filters.\nrequire_once __DIR__. '\/inc\/actions.php';\nrequire_once __DIR__. '\/inc\/filters.php';\n<\/code><\/pre>\n<p>Nuevamente, esto supone que est\u00e1 aplicando las tres recomendaciones. De lo contrario, su implementaci\u00f3n puede variar.<\/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>C\u00f3mo escribo complementos de WordPress usando programaci\u00f3n procedimental versus programaci\u00f3n orientada a objetos y c\u00f3mo organizo el c\u00f3digo procedimental.<\/p>\n","protected":false},"author":1,"featured_media":235594,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[716,914,840,861],"tags":[1172],"class_list":["post-231064","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","category-otro","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231064","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=231064"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231064\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/235594"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=231064"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=231064"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=231064"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}