Nombres claros para un código limpio

Como vimos en el artículo sobre cómo escribir código limpio y legible el utilizar nombres claros y explícitos para nombrar variables, constantes, funciones y clases es indispensable para considerar que tenemos un código limpio y legible.

Variables y constantes

A la hora de poner nombre a una variable o constante debemos pensar en que nuestro código lo puede leer otra persona y tendrá qué entender que hace nuestro código. Una variable llamada aux, A, contar o num no aclara qué hace un código pero nombres como hipotenusa, precioFinal, distanciaDelMargen o ContadorDePalabras si son nombres más comprensibles para todos.

Funciones y clases

A la hora de poner nombres a métodos y clases debemos prestar atención al trabajo o responsabilidad que realizan. Nombres de clases como ControlDeDatosDeUsuario, VisualizadorDeDatosDeUsuario, DriverDeDatosDeUsuario son nombres apropiados para entender qué hace una clse.

En el caso de las funciones o métodos el nombre debería describir la función que se va a realizar. Nombres como GuardarDatosDeUsuario, CargaDatosDeUsuario o BorraUsuario son nombres bastante explícitos para entender qué hará la función al ser llamada.

Coherencia a la hora de escribir los nombres.

Hay varios métodos para escribir nombres de variables, métodos y clases como el método Camel case, el Pascal case o la notación Húngara.Podemos seguir cualquiera de estos métodos de escritura de nombres pero lo que no debemos hacer es mezclarlos en un mismo proyecto ya que hace que nuestro código sea confuso de entender y mantener.

Cómo indentar el código para que sea limpio y legible

Como vimos en el artículo sobre cómo escribir código limpio y legible una de las características es la de que el código esté escrito con una buena indentación.

¿Qué es la indentación de un texto?

La palabra indentación, como otras muchas palabras tecnológicas, proviene de una traducción libre del término indentation. En castellano el término correcto sería espacio de sangrado para un texto.

En pocas palabras es el espacio vacío situado a la izquierda de una línea de texto.

En un bloque de texto con varias líneas podemos tener distintos niveles de sangrado. Cuando esto ocurre esa diferencia de espacios vacíos a la izquierda empieza a tener significado ya que visualmente nos permite identificar las diferencias entre una línea y la siguiente.

En el caso de algunos lenguajes de programación como Python o el lenguaje de formateado de datos YAML el nivel de indentación tiene un significado claro ya que se utiliza para indicar el comienzo de un bloque o dominio.

En otros lenguajes el nivel de indentación se utiliza para identificar fácilmente si una línea de código pertenece a un bloque condicional, una función o bloque de código. De esta forma podemos encontrar visualmente cuándo comienza y termina una función o un conjunto de instrucciones que pertenecen a un mismo bloque de código.

¿Espacio o tabulación?

Dentro del mundo de la programación hay personas que prefieren utilizar el caracter de espacio para indentar el código y otras personas prefieren el caracter de tabulación. Esto honestamente no tiene demasiada importancia siempre y cuando no mezclemos tabulaciones con espacios y seamos coherentes con nuestra forma de indentar el código.

Además los editores de código más habituales nos permiten seleccionar entre espacio o tabulación para indentar nuestro código.

Indentación y accesibilidad

La indentación del código puede resultar invisible a programadores ciegos que utilicen el lector de pantallas mediante una síntesis de voz. Utilizando una línea braille o braille display el nivel de indentación es visible gracias a que los caracteres en blanco son legibles a través del dispositivo de lectura braille.

Para facilitar la tarea de identificar el nivel de indentación de una línea para los usuarios de lectores de pantalla con voz se incluyen características en estos productos de apoyo para identificar el nivel de indentación de una línea de textos. Tanto JAWS, NVDA como ORCA incluyen opciones para activar la identificación del nivel de indentación de un texto. Incluso permiten activar un modo para que el lector de pantallas avise al usuario de que el nivel de indentación ha cambiado cuando sube o baja por el fichero de código.

En el caso de VoiceOver para MacOS esta opción no está disponible por defecto pero podemos utilizar un AppleScript para saber el nivel de indentación de un texto.

Cómo escribir código limpio y legible

Dentro del mundo de la programación un profesional se dedica a realizar muchas tareas pero la más habitual, además de pensar en solucionar problemas y resolverlos, es la de escribir código en un lenguaje de programación.

Este código puede estar escrito de muchas formas y un buen profesional deberá procurar que su código sea lo mas limpio y legible.

Las razones para este esfuerzo son las siguientes:

  • Un código limpio es más fácil de mantener ya que la lectura y el seguimiento de qué está haciendo el código mejora y la detección de errores es más sencilla.
  • Incorporar hábitos de escritura limpia va educando la mente del programador y mejora la detección de posibles errores mientras se escribe el código.
  • Colaborar y compartir con otros programadores es más sencillo ya que el código es más comprensible para todos.

Todas estas razones hacen que el escribir código limpio sea indispensable para un programador profesional que trabaja en un equipo de desarrollo.

Características de un código limpio

Estas son las características que debe cumplir un código para considerarse limpio.

  • Buena indentación del código
  • Nombres explícitos para variables, funciones y clases
  • Funciones cortas y sencillas
  • Sin código innecesario o comentado
  • Consistencia y legibilidad
  • Código con comentarios útiles

En futuros artículos veremos cada una de estas características en detalle.

Atajos de teclado útiles en XCode

A la hora de mejorar nuestra productividad utilizando una herramienta lo ideal es conseguir que algunas tareas repetitivas o la activación de algunas funciones que ofrece la herramienta se consiga realizar en el menor tiempo posible. Esta mejora en la productividad la podemos conseguir utilizando atajos de teclado.

Xcode es el entorno de desarrollo de Apple para sus distintas plataformas de software. Ofrece multitud de funciones y posee multitud de atajos de teclado. Incluso nos ofrece la oportunidad de crear atajos nuevos, redefinirlos o mejorar su comportamiento.

En este artículo comparto alguno de los atajos de teclado que más utilizo con esta herramienta.

Moverse entre zonas del proyecto

A veces lo ideal para encontrar algo es saber cómo moverse rápidamente. Cuando tenemos un proyecto con muchos archivos esto es indispensable.

Saltar entre archivos de un grupo

Control + 5

Al usar este atajo de teclado desde un editor nos aparecerá una lista de todos los ficheros que están contenidos en el mismo grupo que el fichero que estemos editando en ese momento. De esta forma podemos saltar entre ficheros agrupados de forma rápida.

Saltar entre elementos del fichero actual

Control + 6

Con este atajo de teclado accederemos a una lista de todas las declaraciones de variables, métodos, marcas y demás símbolos del fichero que estemos editando. De esta forma podemos ver de un vistazo todo lo que hay y saltar al punto que necesitemos.

Saltar a una línea

Comando + L

Con este atajo podremos mover el foco de edición a una línea concreta del fichero que estemos editando.

Abrir rápidamente

Mayúscula + Comando + O 

Este comando nos abrirá un popup para encontrar rápidamente algún elemento del proyecto sea un fichero, una clase o la declaración de un método.

Lo interesante de este comando es que cuando estamos en el elemento que queremos abrir si pulsamos enter lo abriremos en el editor principal pero si pulsamos Option+Enter lo abriremos en el editor secundario

Mostrar en el explorador de proyecto

Mayúscula + Comando + J

Con este atajo se abrirá el panel del explorador de proyecto focalizando el fichero que tengamos abierto en el editor. Esto es útil para cuando el depurador o el compilador nos lleva a un fichero de código donde se localiza un error o warning. De esta forma nos podemos orientar en el árbol de ficheros del proyecto de forma más clara.

Controlando el espacio

A veces la pantalla de Xcode se llena de demasiada información o elementos y no nos permite concentrarnos o ver con claridad qué estamos haciendo.

Para gestionar las áreas de visualización de Xcode tenemos los siguientes atajos.

Ocultar/mostrar el inspector

Opción + Comando + 0

El inspector de objetos es un panel muy útil cuando estamos utilizando Interface Builder, añadiendo idiomas a los recursos o gestionando la dependencia de ficheros entre targets. El resto del tiempo de uso de Xcode no lo utilizamos para nada. Por esta razón viene bien saber qué se puede ocultar y mostrar fácilmente.

Mostrar y ocultar el área de depuración

Comando + Mayúsculas + Y

El área de depuración ocupa un espacio importante y es una zona que sólo utilizamos cuando estamos realizando pruebas. Por esta razón también es interesante ocultarla cuando no se utilice.

Mover el foco al editor

Control + Comando + Mayúsculas + Enter

Con este atajo de teclado el editor se ampliará para ocupar todo el espacio disponible

Esto viene bien cuando, por ejemplo, al intentar leer código con VoiceOver notamos que no lee líneas de código completas. Esto se debe a que algún otro panel o área de Xcode está limitando el área de visualización del editor.

Pausar/reanudar visión del canvas

Comando + Opción + P

A veces nos interesa que la simulación del cambas de la vista SwiftUI se refresque o nuestro equipo va corto de recursos y es mejor desactivar esta simulación.

Ocultar/mostrar canvas

Comando + Opción + Enter

Cuando estamos editando una View de SwiftUI puede que nos interese ocultar el canvas de previsualización para ahorrar recursos.

Conclusión

Con esta lista de atajos podemos mejorar sustancialmente nuestra productividad en Xcode pero hay muchos más atajos e incluso podemos crear los nuestros gracias a las opciones de personalización de MacOS y Xcode.

Merece la pena explorar un poco esta gran herramienta que ofrece tantas posibilidades.

Mostrar y escuchar un iPhone en la pantalla de tu Mac

En muchas ocasiones puede que nos interese grabar el video y el audio de nuestro dispositivo iOS o puede que necesitemos compartir lo que se ve y se escucha en nuestro iPhone mientras estamos en una videoconferencia.

Aunque algunas aplicaciones incluyen drivers para identificar un dispositivo iOS como otra ventana de aplicación a la hora de compartir pantalla el propio sistema MacOS nos proporciona una solución simple y compatible con cualquier aplicación de videoconferencia que nos permita compartir nuestro escritorio.

QuickTime player al rescate

La aplicación Quicktime player viene instalada en MacOS por defecto y funciona como una grabadora de video y audio simple pero incluye funciones muy interesantes.

Una de ellas es la opción de nueva grabación de video la cual nos permite grabar la señal de video y audio del dispositivo que seleccionemos. Al seleccionar esta opción desde el menú archivo nos saldrá la interfaz simple de Quicktime player.

En esta interfaz hay un botón llamado mostrar menú de selección de dispositivo de captura que nos permite seleccionar cuales serán los dispositivos de entrada para la cámara y el micrófono. Si en este botón de menú elejimos nuestro iPhone o iPad tanto como para cámara como para micrófono podremos grabar tanto la imagen como el audio del dispositivo.

Para que se pueda escuchar en el Mac el audio del iPhone es necesario buscar un regulador de volumen en la pantalla de Quicktime player y subir el volumen.

También es posible ver y escuchar el iPhone en tiempo real sin necesidad de iniciar la grabación de video. De esta forma Quicktime player consumirá menos recursos y es una solución ideal si sólo necesitamos ver o compartir la pantalla de nuestro dispositivo móvil.

Qué son los patrones de diseño en la industria del software

Los patrones de diseño son soluciones habituales a problemas que aparecen durante el diseño de un producto software.

Un patrón no es una pieza de código, sino un concepto general para resolver un problema concreto.  El patrón de diseño ayuda con ciertas instrucciones a implementar una solución que se adapte a las necesidades del programa que se esté creando..

Patrones y algoritmos

No se deben confundir los conceptos de algoritmo y patrón de diseño. El algoritmo es una receta para solucionar un problema muy concreto y el patrón de diseño es un plano arquitectónico para indicar cómo repartir las funciones, clases y objetos en nuestro programa.

Descripción de un patrón de diseño

La descripción de un patrón de diseño es un texto formal que permite la implementación del patrón en múltiples entornos y contextos.

Esta descripción del patrón incluye elementos como propósito, motivación, estructura de clases, aplicabilidad, pasos de implementación y ejemplo de código.

Clasificación

Los patrones de diseño se diferencian en su complejidad, nivel de detalle y escala de aplicabilidad.

Los patrones más básicos se denominan idioms y suelen aplicarse a un lenguaje de programación específico.

Los patrones más complejos y de alto nivel se denominan patrones de arquitectura y son aplicables a casi cualquier lenguaje de programación. Estos patrones ayudan al diseño global de la aplicación definiendo la arquitectura del proyecto software.

Clasificación por propósito

Los patrones de diseño se pueden clasificar también por el tipo de propósito que tenga el patrón de diseño.

Patrones de construcción

Estos patrones proporcionan mecanismos y enfoques para la creación de objetos buscando mejorar la reutilización de código y su flexibilidad.

Patrones de estructura

Estos patrones ofrecen soluciones para ensamblar y relacionar objetos para crear estructuras más grandes y maximizar su eficiencia y flexibilidad.

Patrones de comportamiento

Estos patrones ofrecen mecanismos para mejorar la comunicación entre objetos y definir las responsabilidades entre clases y objetos.