Arduino y Raspberry Pi Principiante? Aquí es cómo escribir código limpio

Arduino y Raspberry Pi Principiante? Aquí es cómo escribir código limpio / Bricolaje

Cuando empiezas a leer más y más sobre el desarrollo de software, con frecuencia te encuentras con la frase “código limpio”. En su forma más pura, este es un código que es fácil de leer para otras personas. Es expresivo y hermoso, y puede discernir fácilmente su intención simplemente por mirándolo.

Escribir código limpio es más fácil decirlo que hacerlo.

Arduino es una plataforma de creación de prototipos de electrónica de código abierto basada en hardware y software flexibles y fáciles de usar. Está dirigido a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos. Lea más tinkerer, o está creando Raspberry Pi Raspberry Pi: El tutorial no oficial Raspberry Pi: El tutorial no oficial Ya sea un propietario actual de Pi que quiera aprender más o un posible propietario de este dispositivo del tamaño de una tarjeta de crédito, no está No es una guía que te quieres perder. Lea más aplicaciones con Python, o incluso es un desarrollador web, hay algunos consejos útiles a seguir que harán que su código sea más fácil de leer para otros.. Esto es lo que necesitas saber.

Se consistente

Quizás el primer consejo, y el más obvio, es ser consistente en lo que haces Un buen ejemplo de esto es seguir los mismos patrones a la hora de nombrar las funciones. Los fundamentos absolutos de la programación para principiantes (Parte 2) Los fundamentos absolutos de la programación para principiantes (Parte 2) En la parte 2 de nuestra guía absoluta de programación para principiantes, estaré Cubriendo los conceptos básicos de funciones, valores de retorno, bucles y condicionales. Asegúrese de haber leído la parte 1 antes de abordar esto, donde expliqué la ... Leer más y las variables Los conceptos básicos de la programación de computadoras 101 - Variables y tipos de datos Los conceptos básicos de la programación de computadoras 101 - Variables y tipos de datos Habiendo introducido y hablado un poco sobre Objetos Programando antes y de donde proviene su tocayo, pensé que es hora de que pasemos por los fundamentos absolutos de la programación de una manera no específica para el lenguaje. Esto ... Leer más. Debes elegir una convención de nomenclatura y seguirla.

Entonces, ¿qué convención de nombres debe utilizar?

Bueno, si estás escribiendo Python para Raspberry Pi, la respuesta es clara. El estándar PEP-8 (el barómetro para el código de Python bueno y limpio) dice que los nombres de las variables deben estar en minúsculas, con cada palabra separada por un guión bajo. Por ejemplo: gpio_input y control de humedad.

La guía de estilo Arduino indica implícitamente que debes escribir tus variables en lo que se conoce como Camel Case. Aquí, las palabras no están separadas por nada, pero la primera letra de cada palabra está en mayúscula, excepto la primera palabra. Por ejemplo: botón presionado y temperatura de lectura.

Hay, por supuesto, otros estilos de nombres de variables. Lo anterior es simplemente que es recomendado por las guías de estilo oficiales. Pero elija lo que elija, asegúrese de cumplirlo y utilice la misma convención de nomenclatura en todo el programa..

Escribir comentarios significativos

Los comentarios son una excelente manera de explicar lo que hace tu programa. Puede indicar lo que hace cada función y cada variable representa en sus propias palabras. Esto facilita que un tercero lea su código, pero también hace que su código sea más fácil de mantener, ya que en última instancia, lo entiende mejor.

Pero si no escribes tus comentarios de una manera que sea obvia y expresiva, entonces no deberías molestarte..

Al escribir comentarios, debe intentar explicar el por qué del código, además del cómo. Intente y aclare abundantemente la intención, y diga algo sobre el código que no pueda decirse. Entonces, en lugar de:

// lectura de actualización

Considere escribir:

// Actualiza el número de veces que se ha roto el rayo láser, antes de tuitearlo

Asegúrate de escribir oraciones completas y gramaticalmente correctas. Además, el estándar PEP-8 para Python dice que siempre debe escribir sus comentarios y variables en inglés. Esto hace que sea más fácil para otros colaborar con usted, en caso de que decida liberar su código como fuente abierta, ya que el inglés es prácticamente la lengua franca del desarrollo de software..

La guía de estilo Arduino va más allá y dice que debe comentar cada bloque de código, cada bucle for y cada declaración de variable..

Personalmente, creo que eso es un poco extremo. Si está escribiendo nombres verbales y expresivos de variables, entonces su código ya se está auto documentando. Dicho esto, no dudes en agregar comentarios donde creas que son necesarios. Usa tu propio buen juicio.

Simplifica tu código

Cuando está aprendiendo a desarrollar por primera vez Cómo aprender a programar sin todo el estrés Cómo aprender a programar sin todo el estrés Tal vez haya decidido dedicarse a la programación, ya sea para una carrera o simplemente como pasatiempo. ¡Genial! Pero tal vez estás empezando a sentirte abrumado. No muy bien. Aquí hay ayuda para facilitar su viaje. Leer más, a menudo estás lleno de un inmenso entusiasmo. Usted lee todo lo que pueda sobre el idioma, el marco o la plataforma elegidos. Empieza a encontrar conceptos que nunca antes conoció y está ansioso por usarlos en su propio código..

Cosas como los operadores ternarios, que le permiten condensar la lógica de un “si declaración” como este:

 int x = 5; si (x < 10)  y = 1;  else  y = 0;  

En una sola línea, así:

int x = 5; int y = (x < 10) ? 1 : 0; printf("%i\n", y); 

Los operadores ternarios son ciertamente geniales, y les animo a que lean sobre ellos. Pero cuando estás escribiendo un código que es fácil de leer para otros, es mejor evitarlo. Eso es solo un ejemplo, sin embargo.

La guía de estilo Arduino también lo alienta a evitar los punteros, #define sentencias y tipos de datos que no sean el estándar: boolean, char, byte, int, unsigned int, long, unsigned long, float, double, string, array y void. Debe evitar los tipos de datos como uint8_t, ya que estos se utilizan con menos frecuencia, no se explican en la documentación y no son demasiado precisos..

Sangre, y tomar ventaja de los espacios en blanco

Cuando se trata de escribir código limpio, los usuarios de Python tienen la ventaja, ya que el intérprete estándar de Python exige que todo el código debe Ser sensiblemente estructurado y con sangría. Si no hace sangría después de cada función y declaración de clase, y declaración condicional, su programa simplemente no se ejecutará.

En Arduino, no hay nada que le impida escribir código no estructurado y compacto. Esto, en última instancia, es difícil de leer y de mantener..

Pero tampoco hay nada que le impida estructurar mejor su código..

Primero, establece cuánto vas a sangrar. Debe usar la tecla de tabulación con prudencia, ya que cada editor de texto trata el código ASCII para la pestaña de manera diferente, y si está compartiendo su código con otra persona, existe la posibilidad de que puedan introducir inconsistencias en su sangría de manera inadvertida. Estas inconsistencias pueden romper tu programa, especialmente si estás usando un lenguaje sensible al espacio en blanco como CoffeeScript CoffeeScript es JavaScript sin los dolores de cabeza CoffeeScript es JavaScript sin los dolores de cabeza Nunca me ha gustado mucho escribir JavaScript tanto. Desde el día en que escribí mi primera línea usándolo, siempre me ha molestado que todo lo que escribo en él termine pareciéndose a un Jackson ... Leer más o Python. Este artículo de OpenSourceHacker explica con más detalle por qué se debe evitar la tecla de tabulación.

Tiendo a usar cuatro espacios para cada sangría, pero el número total depende de usted. Solo mientras seas consistente.

Puede configurar su IDE y el editor de texto para tratar cada pestaña como un número establecido de espacios, sin embargo, lo que le permite usar la tecla de la pestaña sin el riesgo de presentar problemas. Si usas Sublime Text 2, revisa su documentación oficial. Si usa Vim, simplemente edite su .vimrc archivo con estas lineas. El editor Arduino lo hace automáticamente por usted, e inserta dos espacios cada vez que presiona la pestaña.

Entonces, simplemente necesita saber dónde sangrar su código. Como buena regla general, siempre debe hacer sangría después de cada declaración de función y después de cada Si, más, para, mientras, cambiar, y caso declaración.

Muchos editores vienen con la capacidad de sangrar bloques enteros de código a la vez. Si utiliza Sublime Text 2, puede configurar una combinación de teclas de acceso rápido o pulsación de tecla. De lo contrario, puede usar la combinación predeterminada, que (en OS X) es Cmd + [. En el editor de Arduino, puede corregir la sangría de su archivo automáticamente presionando Ctrl + T en Windows y Linux, y Cmd + T en OS X.

Depende completamente de su editor, por lo que lee el manual!

No te repitas

Uno de los mantras más importantes del buen desarrollo de software es no te repitas, que a menudo se acorta a SECO.

Escribir código DRY es increíblemente importante, ya que garantiza que la lógica de su programa sea coherente, le permite realizar un cambio en un lugar y reflejarlo globalmente, y pasa menos tiempo escribiendo lo mismo una y otra vez.

La mejor manera de mantenerse SECO es con un uso liberal y generoso de funciones - encapsulando una tarea repetida con un bloque de código al que puedes llamar una y otra vez, y asegurándote de que cada uno sea distinto y esté bien escrito.

Una buena función es corta; La guía PEP-8 dice poco sobre la duración de la función, pero el Código limpio: Un manual de Agile Software Craftsmanship por Bob Martin (muy recomendado) dice que “Las funciones casi nunca deben tener 20 líneas de longitud.”. Preferiblemente, serían incluso más corto que eso.

Las funciones también deben hacer exactamente una cosa. Necesito una función que haga dos cosas.? Escribe dos funciones.

Estos consejos facilitan seguir el flujo de un programa y, finalmente, depurarlo si es necesario. También hay un beneficio adicional para los usuarios de Arduino, que están estrechamente limitados por las limitaciones de almacenamiento, ya que se eliminan las redundancias. Esto resulta en programas más pequeños.

Ser explícito

Otro mantra importante del desarrollo de software es “explícito es mejor que implícito”. Significa que su código debería prácticamente gritar lo que está haciendo a primera vista. La guía de estilo Arduino dice que algo así debería evitarse:

if (buttonPressed) doSomething ();  

Más bien, deberías dejar en claro lo que está sucediendo. En su lugar, escribe algo como esto:

if (buttonPressed == True) doSomething ();  

Salir y codificar (bien)

Escribir código limpio es sorprendentemente simple. Simplemente debe ser coherente en todo lo que hace, evitar redundancias y ser explícito. Recuerde, el código limpio es simplemente un código que es legible.

Hay un montón de material de lectura excelente sobre este tema. Un excelente punto de partida es el tutorial de Arduino y las guías de estilo API, seguidas del estándar PEP-8 si está creando aplicaciones Python para la Raspberry Pi. Si está utilizando otro idioma (como Javascript en el tablero de Tessel Construyendo el Internet de las cosas, con Tessel: The Node.js Tablero de desarrollo Construyendo el Internet de las cosas, con Tessel: The Node.js Development Board Tessel es una nueva generación de Junta de desarrollo que se ejecuta completamente en Node.js, y después de un exitoso Kickstarter, ahora han llegado al punto de estar disponibles para todos. Leer más), consulte Google para obtener una guía de estilo oficial.

Si está buscando una lectura más académica sobre el tema, consulte Clean Code: A Handbook of Agile Software Craftsmanship de Bob Martin. Lo mencioné anteriormente en este artículo, y es muy recomendable. Aunque utiliza Java para ilustrar conceptos, muchas de las ideas se pueden transmitir a otros idiomas, como Python y C para Arduino..

También hay algunas publicaciones de blog brillantes en línea que ilustran cómo escribir código bueno, descriptivo y limpio. Te recomiendo que eches un vistazo “Código limpio y de alta calidad: una guía sobre cómo convertirse en un mejor programador” por Arash Arabi escribiendo para butterfly.com.au, y “Los fundamentos de escribir código limpio” por Chris Reynolds, escribiendo para webdevstudios.com.

Aunque no está explícitamente relacionado con el código limpio, también es útil saber qué funciones y bibliotecas se evitan mejor en el idioma que elija. Por ejemplo, si estás aprendiendo PHP, debes evitar el “mysql” bibliotecas, y si está creando productos físicos con Arduino, nunca debe usar la función de Demora. Función de Demora de Arduino, y por qué no debe usarla. Función de Demora de Arduino, y por qué no debe usarla. Para demostraciones básicas de cómo funciona Arduino, realmente no deberías usarlo en el mundo real. He aquí por qué, y qué deberías usar en su lugar. Lee mas .

Recuerde, el código que es más fácil de leer es más fácil de mantener. Además, si alguna vez te quedas atascado con algo, es más fácil que alguien lo lea y te ayude.

¿Tienes algún consejo para escribir código limpio? ¿Yo me perdí algo? ¡Dime! Déjame un comentario abajo, y házmelo saber..

Créditos de las fotografías: cama seca (Premasagar), Little TAB Key (Kai Hendry), 2015 (Wikilogia)

Explorar más sobre: ​​Programación.