{"id":20591469,"url":"https://github.com/lmtreser/good-code","last_synced_at":"2026-05-05T01:34:31.684Z","repository":{"id":221223036,"uuid":"753785891","full_name":"lmtreser/good-code","owner":"lmtreser","description":"Colección de guías y recursos para aprender y mejorar la práctica de escribir código, orientado principalmente a Arduino","archived":false,"fork":false,"pushed_at":"2024-10-06T22:13:37.000Z","size":12199,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-06T13:46:10.376Z","etag":null,"topics":["arduino","begginers","cpp","git","good-practices"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lmtreser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-06T19:40:15.000Z","updated_at":"2024-10-06T22:13:40.000Z","dependencies_parsed_at":"2024-05-29T19:16:41.128Z","dependency_job_id":"1f390111-dd38-4d5d-977a-9b4ad2cec5d5","html_url":"https://github.com/lmtreser/good-code","commit_stats":null,"previous_names":["lmtreser/good-code"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lmtreser/good-code","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2Fgood-code","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2Fgood-code/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2Fgood-code/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2Fgood-code/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lmtreser","download_url":"https://codeload.github.com/lmtreser/good-code/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2Fgood-code/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32632287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","begginers","cpp","git","good-practices"],"created_at":"2024-11-16T07:40:27.311Z","updated_at":"2026-05-05T01:34:31.667Z","avatar_url":"https://github.com/lmtreser.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Good Code\n\nGuías y recursos para aprender y mejorar la práctica de escribir código, orientado principalmente a Arduino.\n\n- Git\n    - `git` Recursos sobre control de versiones\n    - `git/gitignore` A collection of useful *.gitignore* templates\n- Plantillas\n    - `templates/ArduinoLibraryExample`Arduino Library Example\n    - `templates/arduTemplate` Arduino Firmware Template\n    - `templates/platformio-examples-develop` PlatformIO Project Examples\n    - `templates/wifiTemplate` ESP8266/ESP32 WiFi Firmware Template\n- Guías de estilo\n    - `code_style/buenas_practicas.ino` Buenas practicas por [Luis Llamas](https://www.luisllamas.es/) \n    - `code_style/arduino-style-guide.md` Style guide for Arduino por [@Irikos](https://github.com/Irikos/arduino-style-guide)\n    - `code_style/SFECodeStyleGuide.md` SparkFun Code Style Guidelines\n\n---\n\n¿Alguna vez te has topado con un código misterioso? ¡A todos nos ha pasado! 💪🏽\n\nDesconcertado por nombres de variables crípticos, funciones interminables y comentarios confusos. Escribir código limpio es esencial para evitar estos escenarios y garantizar un proceso de desarrollo sin problemas. Hace que su código se explique por sí mismo, sea fácil de navegar y se pueda mantener, lo que le ahorra futuros dolores de cabeza.\n\nLa adopción de principios de código limpio mejora la legibilidad del código, facilita la depuración, reduce el costo de mantenimiento del programa, mejora la colaboración, mejora la calidad del código y te convierte en un mejor programador.\n\n1. **Utilizar nombres descriptivos**. Los nombres claros y descriptivos hacen que el código sea más fácil de entender. Ya sea una variable, función o clase, su nombre debe reflejar su propósito.\n\n2. **Seguir el principio DRY**. DRY (del inglés \"Don't Repeat Yourself\") significa \"No te repitas\". Si escribe el mismo código en varios lugares, deberá crear una función que pueda llamarse siempre que sea necesaria esa tarea.\n\n3. **Mantener las funciones pequeñas**. Cada función debe hacer una cosa y hacerlo bien. Si las funciones son demasiado grandes y hacen demasiadas cosas, probablemente sea hora de dividirlas.\n\n4. **Escribir comentarios, pero sabiamente**. Los comentarios son útiles pero no son una alternativa para el código limpio. Deberían explicar por qué se hace algo, no qué se hace. Recuerde, un buen código se documenta principalmente por sí mismo.\n\n5. **Refactorizar periódicamente el código**. No tengas miedo de revisar el código y mejorarlo. A medida que adquiera más conocimientos y experiencia, encontrará mejores formas de hacer las cosas. La refactorización es parte del proceso de codificación.\n\nRecordar: escribir código limpio requiere práctica, pero los beneficios valen la pena.\n\n## Recursos para seguir aprendiendo\n\n- Arduino\n\n    - [4 consejos para programar código más limpio en Arduino](https://www.luisllamas.es/4-consejos-para-programar-codigo-mas-limpio-en-arduino/)\n    - [Arduino documentation goes open-source for community contributions](https://github.com/arduino/docs-content)\n    - [Arduino Lint](https://github.com/arduino/arduino-lint)\n    - [Arduino programming traps, tips and style guide](http://www.gammon.com.au/forum/?id=12153)\n    - [Arduino Style Guide for Creating Libraries](https://docs.arduino.cc/learn/contributions/arduino-library-style-guide/)\n    - [Arduino Style Guide for Writing Content](https://docs.arduino.cc/learn/contributions/arduino-writing-style-guide)\n    - [Good Arduino Code](https://goodarduinocode.com/)\n    - [How to Write A Great Arduino Library](https://www.sparkfun.com/news/3245)\n    - [How to Write Clean Arduino Code](https://blog.wokwi.com/how-to-write-clean-arduino-code/)\n    - [Programming Arduino Uno in pure C](https://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/)\n    - [The Arduino Language in 10 Points](https://roboticsbackend.com/the-arduino-language-in-10-points/)\n    - [Translate an Idea into Arduino Code](https://beckystern.com/2019/05/05/translate-an-idea-into-arduino-code/)\n    - [Writing a Library for Arduino](https://docs.arduino.cc/learn/contributions/arduino-creating-library-guide/)\n\n- Programación en general\n\n    - [97 cosas que todo programador debería saber](http://97cosas.com/programador/)\n    - [C Coding Standard](https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html)\n    - [C++ Cheat Sheets \u0026 Infographics](https://hackingcpp.com/cpp/cheat_sheets.html)\n    - [C++ Coding Standard](https://users.ece.cmu.edu/~eno/coding/CppCodingStandard.html)\n    - [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html)\n    - [Coding in C for MCUs: Sort Structs to Save Code Size](https://philmulholland.medium.com/coding-in-c-for-mcus-sort-structs-to-save-code-size-7a311e83a5db)\n    - [Guías de código abierto](https://opensource.guide/es/)\n    - [Hacking C++](https://hackingcpp.com/)\n    - [KTOWN's Guide to Readable C Code](https://learn.adafruit.com/ktowns-guide-to-readable-c-code)\n    - [PlatformIO Project Examples](https://github.com/platformio/platformio-examples)\n    - [References in C++](https://www.geeksforgeeks.org/references-in-cpp/)\n\n- Documentar código\n\n    - [AsciiDoc](https://asciidoc.org/)\n    - [Doxygen](https://www.doxygen.nl/)\n    - [MkDocs](https://www.mkdocs.org/)\n    - [The Markdown Guide](https://www.markdownguide.org/)\n\n- Control de versiones\n\n    - [A successful Git branching model](https://nvie.com/posts/a-successful-git-branching-model/)\n    - [Git Cheatsheet](http://ndpsoftware.com/git-cheatsheet.html)\n    - [Git y GitHub tutorial paso a paso](https://programarfacil.com/blog/arduino-blog/git-y-github/)\n    - [gitignore](https://github.com/github/gitignore)\n    - [Gitignore Explicado: ¿Qué es Gitignore, y cómo agregarlo a tu repositorio?](https://www.freecodecamp.org/espanol/news/gitignore-explicado-que-es-y-como-agregar-a-tu-repositorio/)\n    - [Oh My Git](https://ohmygit.blinry.org/)\n\n## Licencia\n\nEste trabajo está protegido por la **Licencia MIT**. Puedes acceder a la versión original de la licencia (en inglés) a través del archivo [LICENSE](./LICENSE) o en línea en [The MIT License (MIT)](https://mit-license.org/). También proporcionamos una traducción no oficial desde [Wikipedia](https://es.m.wikipedia.org/wiki/Licencia_MIT#La_licencia):\n\nCopyright (c) 2024 Lucas Martín Treser\n\nPor la presente se concede permiso, libre de cargos, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el \"Software\"), a utilizar el Software sin restricción, incluyendo sin limitación los derechos a usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar, y/o vender copias del Software, y a permitir a las personas a las que se les proporcione el Software a hacer lo mismo, sujeto a las siguientes condiciones:\n\nEl aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.\n\nEL SOFTWARE SE PROPORCIONA \"COMO ESTÁ\", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A GARANTÍAS DE COMERCIALIZACIÓN, IDONEIDAD PARA UN PROPÓSITO PARTICULAR E INCUMPLIMIENTO. EN NINGÚN CASO LOS AUTORES O PROPIETARIOS DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRAS RESPONSABILIDADES, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O CUALQUIER OTRO MOTIVO, DERIVADAS DE, FUERA DE O EN CONEXIÓN CON EL SOFTWARE O SU USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmtreser%2Fgood-code","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmtreser%2Fgood-code","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmtreser%2Fgood-code/lists"}