Documentación y optimización

Introducción

En esta Unidad aprenderemos a:

  • Trabajar de forma habitual con un sistema de control de versiones.
  • Identificar los patrones de refactorización más usuales.
  • Revisar el código fuente usando un analizador de código.
  • Documentar el código fuente.

Optimización

Hediondez del código

  • También llamado code smell en inglés
  • Es síntoma en el código fuente que indica posiblemente un problema más profundo.
  • Usualmente no son bug de programación (errores): no son técnicamente incorrectos y en realidad no impiden que el programa funcione correctamente.
  • Indica deficiencias en el diseño que puede ralentizar el desarrollo o aumentan el riesgo de errores o fallos en el futuro.
  • Es un motivo importante para realizar refactorización.
  • Hediondez del código

Análisis de código

  • Tipos:
    • Análisis dinámico (unit tests)
    • Análisis estático (lint)

Análisis estático de código

Linters

  • Analizadores estáticos de código:

    • lint: C
    • sonar: Java
    • JSLint, ESLint: Javascript

Continuous Inspection o Continuous Analysis

  • Sitios web que ofrecen inspección de código:

    • Scrutinizer
    • SonarQube

Scrutinizer

scrutinizer

  • PHP, Python y Ruby soportados
  • 14 días de prueba gratis
  • Precio/Mes:
    • Plan Basic: 49 €
    • Plan Professional: 99 €
    • Plan Unlimited: 199 €

Note: A fecha Diciembre 2017

SonarQube

sonarqube

  • Más de 20 lenguajes soportados
  • Precio/Mes:
    • Plan Open Source: 0 $
    • Plan Private Projects: Desde 5 $

Note: A fecha Diciembre 2017

Refactorización

  • Es el proceso de reestructurar un código fuente, alterando su estructura interna sin cambiar su comportamiento externo.
  • Técnicas:
    • Renombrado de variables
    • Pasar código duplicado a funciones
    • Eliminación de código inalcanzable
    • Eliminación de código redundante
    • Eliminación de código muerto
    • ...

Artículo en Wikipedia

Documentación

Insignias (badges)

badges

Tipos de documentación

  • Documentación de código
  • Documentación técnica
  • Documentación de usuario

Formatos de documentación

  • HTML (p. ej. Javadoc)
  • Markdown (p. ej. Gitbook)
  • reStructuredText (p. ej. Readthedocs)
  • asciiDoc

Control de versiones

Sistemas más conocidos:

  • CVS
  • Subversion
  • Mercurial
  • Git

Git

Características

  • Moderno
  • Distribuido
  • Eficiente

Git (Conceptos)

  • Repository (local & remote)
  • Commit
  • Branch
    • Checkout
    • Merge (fast-forward, 3-way)

Git (Áreas)

Git areas

Git (Áreas)

Git areas

Git (Ramas)

Git areas

Git (Comandos)

# Configuración
  config 

# Repositorios
  clone, remote add, remote rm

# Básicos
  init, status, log, add, rm, commit, push, pull

# Ramas (branches)
  branch, branch -d, merge, checkout, stash

# Otros
  diff, tag, submodule

CheatSheet

Sitios que soportan GIT

Git sites

results matching ""

    No results matching ""