Professional Documents
Culture Documents
•5
•1
Propósito y contenido de la sesión
Propósito de la sesión
• Describir cómo se puede
minimizar la complejidad.
Contenido de la
sesión
• Minimizar la complejidad.
Recapitulando …
Principios fundamentales de
la construcción de software
Construcción de software
Principios fundamentales de la
construcción de software
Minimizar la complejidad.
Utilizar estándares.
Técnicas de legibilidad
• Código comprensible, como las técnicas de unificación de nombres o la de
estructuración del texto del código.
Documentación del
código.
if (i > 120)
System.out.print("El vehículo supera el límite legal de velocidad");
Mejorando
private static final int LIMITE_VELOCIDAD = 120;
if (i > LIMITE_VELOCIDAD)
System.out.print("El vehículo supera el límite legal de velocidad");
Mecanismos de exclusión y control
Mejora la comprensión.
Para probarlo y
mantenerlo con facilidad
¿Cuál es la salida?
/*
Just Java
Peter van der Linden
April 1, 1996.
\u0050\u0076\u0064\u004c\u0020\u0031\u0020\u0041\u0070\u0
072\u0039\u0036\u002a\u002f\u0020\u0063\u006c\u0061\u0073
\u0073\u0020\u0068\u0020\u007b\u0020\u0020\u0070\u0075\u0
062\u006c\u0069\u0063\u0020\u0020\u0020\u0020\u0073\u0074
\u0061\u0074\u0069\u0063\u0020\u0020\u0076\u006f\u0069\u0
064\u006d\u0061\u0069\u006e\u0028\u0020\u0053\u0074\u0072
\u0069\u006e\u0067\u006b\u005d\u0061\u0029\u0020\u007b\u0
053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
\u002e\u0070\u0072\u0069\12006e\u0074\u006c\u006e\u0028\u
0022\u0048\u0069\u0021\u0022\u0029\u003b\u007d\u007d\u002
f\u002a
*/
• Código ofuscado u oscuro
Salida
Hi!
Nombres de identificadores
// Empieza el bucle
for (i=0; i<10; i++){
A[i] = A[i] + 2; // Suma 2 al elemento i-esimo del array
}
Estructuración del código (1)
if (x > 0) then
begin
y := y + INTERVALO;
recalculerDistancia(x,y,z);
end;
Disposición de los elementos e
instrucciones de control (2)
if (x > 0){
y += INTERVALO;
else{
y += x;
}
if (x > 0)
y += INTERVALO;
else
y+= x;
Organización de bloques de código
encajados
Gestion de las condiciones de error:
manejo de excepciones
• Se denomina excepción a cualquier anomalía o condición de error no
esperada que se produce durante la ejecución de un programa
• Si no se tratan las excepciones forzaran, generalmente, la finalización
abrupta del programa.
• Algunas de las posibles fuentes de error son:
• Divisiones por cero.
• Desbordamientos positivos (overflow) o negativos (underflow).
• Argumentos de método o función no esperados.
• Resultados fuera de rango.
• Índices de arrays fuera de los límites correctos.
• Errores en acceso a ficheros, etc.
Excepciones síncronas y asíncronas
void inicializarSistemaCompleto(){
// Inicializar controladores...
try {
inicializarFichero(f);
} catch (IOException e){
System.out.println("Inicializacion incompleta: "
+ e.getMessage());
}
// resto del código
}
Documentación del código
Documentación técnica
• Documentación del código sobre los algoritmos, interfaces,
estructuras de datos, etc.
Documentación comercial
x= n * m;
for (i=0; i<15; i++)
y += x * i;
Técnicas de afinación del código, Jon
Bentley (3)
• Reglas lógicas
• Mejora de las expresiones lógicas mediante su sustitución por expresiones
algebraicas equivalentes (pero menos costosas de evaluar) y el
reordenamiento de expresiones lógicas compuestas para que se evalúen antes
las menos costosas y más frecuentes, y más tarde las más costosas y raras.