Introducción a la calidad de código



Documentos relacionados
Universidad de Buenos Aires Facultad De Ingeniería. Operaciones Lógicas. [75.40] Algoritmos y Programación I. 2do Cuatrimestre 2010

Universidad de Buenos Aires Facultad De Ingeniería. Compilando en GEANY. [75.40] Algoritmos y Programación I. 2do Cuatrimestre 2011

La Lección de Hoy es Distancia entre dos puntos. El cuál es la expectativa para el aprendizaje del estudiante CGT.5.G.1

Modulo 1 El lenguaje Java

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Tutorial Básico de vbscript

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Ejemplos de conversión de reales a enteros

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS.

Lección 24: Lenguaje algebraico y sustituciones

Ecuaciones de primer grado con dos incógnitas

MICQ. Trabajo Práctico Final Seminario de Ingeniería en Informática I Facultad de Ingeniería, UBA. Junio Cátedra: Pablo Cosso

UNIDAD 1. LOS NÚMEROS ENTEROS.

Análisis de los datos


x

Tema 2. Espacios Vectoriales Introducción

Técnicas de prueba 1. FUNDAMENTOS DE LA PRUEBA DEL SOFTWARE

CUESTIONARIO CMC.2 (ESO y Bachillerato).

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

Propiedad Colectiva del Código y Estándares de Codificación.

1 ELEMENTOS BASICOS DEL LENGUAJE

Matrices equivalentes. El método de Gauss

Acronis License Server. Guía del usuario

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

PHP y MySQL. Indice: Switch Bucles For While do...while

Diseño Estructurado de Algoritmos

QUÉ ES UN NÚMERO DECIMAL?

Estimado usuario. Tabla de Contenidos

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

ESTRUCTURA DE DATOS: ARREGLOS

OPERACIONES ELEMENTALES CON VECTORES

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. Cardenal Gardoki, BILBAO (Vizcaya) Teléfono:

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Informática Bioingeniería

ENSAYO SOBRE TUTORIA. Ma. Guadalupe Salinas Calvario Universidad de Colima RESUMEN

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R

2 EL DOCUMENTO DE ESPECIFICACIONES

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

by Tim Tran:

Créditos académicos. Ignacio Vélez. Facultad de Ingeniería Industrial. Politécnico Grancolombiano

Las 5 S herramientas básicas de mejora de la calidad de vida

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

Manual de Usuario. Del. Módulo de Lector de códigos de barras. FacturPin. Diseñado y producido por. SystemPin

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

Funciones, x, y, gráficos

Análisis de Resultados

Recursos para el Estudio en Carreras de Ingeniería 2006 UNIDAD TEMÁTICA Nº 4 LA TOMA DE APUNTES

Búsqueda avanzada en Google

El Outsourcing como Opción Estratégica

Estructura de datos (arreglos) Vectores y Matrices

Euclides extendido y Test de primalidad probabiĺıstico

Analisis de algoritmos

QUÉ SIGNIFICA CREER?

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

FASCÍCULO. Decidir con inteligencia. Este es el momento.

TEMA: ECUACIONES CON NÚMEROS NATURALES ECUACIONES DE PRIMER GRADO CON UNA INCÓGNITA.

Profr. Efraín Soto Apolinar. Números reales

Curso Completo de Electrónica Digital

SistemA Regional de Información y Evaluación del SIDA (ARIES)

Matrices Invertibles y Elementos de Álgebra Matricial

Sample file. Copyright 2007 Taina Maria Miller.

1ª PARTE MANUAL BÁSICO DE POSICIONAMIENTO WEB 1 2ª PARTE MANUAL BÁSICO DE POSICIONAMIENTO WEB 7

Manual de rol gestor de GAV para moodle 2.5

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Ejercicio Nº 3: Realizar aumentos en una Tabla de Sueldos

10 requisitos para una publicidad efectiva

GENERACIÓN DE CÓDIGO

Fundamentos de la Programación

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS

de débito

Generación de funciones lógicas mediante decodificadores binarios con salidas activas a nivel alto

Problemas fáciles y problemas difíciles. Cuando a los niños les planteamos problemas de suma y resta, Laura dejó sin resolver el siguiente problema:

VECTORES EN EL ESPACIO. 1. Determina el valor de t para que los vectores de coordenadas sean linealmente dependientes.

PROGRAMACIÓN ORIENTADA A OBJETOS

Qué son los monomios?

ARREGLOS DEFINICION GENERAL DE ARREGLO

7. CONCLUSIONES Y TRABAJOS FUTUROS

Dosier Informativo FINANCIAL ADVENTURES

R E S P O N S A B I L I D A D. Cómo explicar el valor de la responsabilidad a los niños?

MANUAL DE AYUDA MODULO TALLAS Y COLORES

Guía Práctica para el Uso del Servicio de Software Zoho CRM

ESTADÍSTICA APLICADA A LA INVESTIGACIÓN EN SALUD Construcción de una Base de Datos

15 CORREO WEB CORREO WEB

+ Cómo ahorrar dinero con Software Quality

Las materias que más te gustaban en el liceo cuales eran? Y las que menos te gustaban?

Estándares para planes de calidad de software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008

UNIVERSIDAD TÉCNICA DEL NORTE FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS ESCUELA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

Transacciones y bloqueos en SQL-Server

Transcripción completa de la Lección 2 (Pinyin).

Cómo?: Resolviendo el sistema lineal homógeneo que satisfacen las componentes de cualquier vector de S. x4 = x 1 x 3 = x 2 x 1

RELACIONES DE RECURRENCIA

BÚSQUEDA AVANZADA EN INTERNET

MICROSOFT WORD 2007 AVANZADO. Unidad Didáctica Nº 1

Transcripción:

Universidad de Buenos Aires Facultad De Ingeniería Introducción a la calidad de código [75.40] Algoritmos y Programación I 2do Cuatrimestre 2010 Cátedra: Ing. Pablo Guarna Autor: Bernardo Ortega Moncada

Índice 1. Introducción 2 2. Qué es la calidad de software? 2 3. Calidad de Código 3 3.1. Legibilidad del código............................................... 3 3.2. Nombres de variables................................................ 4 3.3. Nombres de funciones/procedimientos...................................... 5 3.3.1. Cantidad de parámetros.......................................... 5 4. Comentarios en el código 5 Autor: Bernardo Ortega Moncada 1

1. Introducción Este documento está orientado para que los alumnos de [75.40] Algoritmos y Programación I, Cátedra: Ing. Pablo Guarna, comprendan el concepto de la calidad del código al momento de diseñar un software. Lo cual les permitirá generar códigos con mayor claridad, mas eficientes y mas adaptados para una futura mejora. 2. Qué es la calidad de software? Quizás uno puede estar pensando que la calidad de el software es prácticamente el desempeño del mismo al momento de resolver cierto problema, o quizás la interfaz que tiene con el usuario. Si bien estos dos conceptos son correctos para definir la calidad de software, no quiere decir que sean los únicos. Existen otros factores que definen la calidad de software. Estos factores son: Confiabilidad Facilidad de uso Seguridad Funcionalidad Oportunidad Costo Eficiencia en el desempeño Interoperabilidad Extensibilidad Reutilización Portabilidad Escalabilidad En este documento no me voy a centrar en explicar todos los conceptos de calidad de software, sino mas bien me voy a centrar en la calidad de el código de un software. Antes que nada quiero dejarles citado una frase: El código es el único artefacto del desarrollo de software que siempre se va a construir 1 1 Ing. Carlos Fontela. Profesor de las materias [75.07] Algoritmos y Programación III y [75.47] Taller de Desarrollo de Proyectos II Autor: Bernardo Ortega Moncada 2

3. Calidad de Código Vamos a ver algunos puntos importantes para la calidad de código 3.1. Legibilidad del código La legibilidad del código es sumamente importante, ya que esto nos facilita en la búsqueda de errores del mismo y una posible refactorización (o mejora). Veamos el siguiente ejemplo: Codigo1: Ingreso de notas a 10 alumnos 1 Program notas alum ; 2 Uses c r t ; 3 Const ALUM=10; 4 Type tvector = array [ 1..ALUM] o f i n t e g e r ; 5 Var Notas : tvector ; 6 Procedure toma datos ( var v e c t o r : tvector ) ; 7 Var i : i n t e g e r ; 8 Begin 9 For i :=1 to ALUM do 10 Begin 11 Writeln ( I n g r e s e l a nota d e l alumno, i, de l a l i s t a ) ; 12 Readln ( v e c t o r [ i ] ) ; 13 End ; 14 Writeln ( Carga de datos f i n a l i z a d a ) ; 15 End ; 16 Procedure muestra datos ( var v e c t o r : tvector ) ; 17 Var i : i n t e g e r ; 18 Begin 19 Writeln ( Notas de l o s alumnos : ) ; 20 For i :=1 to ALUM do 21 Writeln ( i : 3, :, v e c t o r [ i ] ) ; 22 End ; 23 Begin 24 C l r s c r ; 25 toma datos ( Notas ) ; 26 w r i t e l n ; 27 muestra datos ( Notas ) ; 28 End. Podemos apreciar que es muy desprolijo y ademas es muy poco claro, lo cual le quita legibilidad al mismo. Ahora veamos el mismo código, pero utilizando la tabulación correspondiente: Codigo1: Ingreso de notas a 10 alumnos 1 Program notas alum ; 2 Uses c r t ; 3 Const ALUM=10; 4 Type tvector = array [ 1..ALUM] o f i n t e g e r ; 5 Var Notas : tvector ; 6 7 Procedure toma datos ( var v e c t o r : tvector ) ; 8 Var i : i n t e g e r ; 9 Begin 10 For i :=1 to ALUM do 11 Begin 12 Writeln ( I n g r e s e l a nota d e l alumno, i, de l a l i s t a ) ; 13 Readln ( v e c t o r [ i ] ) ; 14 End ; 15 Writeln ( Carga de datos f i n a l i z a d a ) ; 16 End ; 17 18 Procedure muestra datos ( var v e c t o r : tvector ) ; 19 Var i : i n t e g e r ; Autor: Bernardo Ortega Moncada 3

20 Begin 21 Writeln ( Notas de l o s alumnos : ) ; 22 For i :=1 to ALUM do 23 Writeln ( i : 3, :, v e c t o r [ i ] ) ; 24 End ; 25 26 Begin {Programa P r i n c i p a l } 27 C l r s c r ; 28 toma datos ( Notas ) ; 29 w r i t e l n ; 30 muestra datos ( Notas ) ; 31 End. Se puede apreciar que el último código es muchísimo mas claro y muchísimo mas fácil para realizar un seguimiento en el caso de una mejora. Tengan en mente esto siempre: El código se escribe una vez y se lee muchas veces. 3.2. Nombres de variables Los nombres de las variables tienen que ser claros y entendibles, ya que los mismos son utilizados para realizar infinitas operaciones. Pasemos a mostrar un ejemplo de lo que se dice: 2 lpp : I n t e g e r ; 3 d i s t a n c i a : Real ; 4 Total1 : Long ; 5 Total2 : Byte ; Codigo2: Malos nombres de variables 2 l i n e a s p o r p a g i n a : I n t e g e r ; 3 Distancia En Metros : Real ; 4 Maximo : Long ; 5 Minimo : Byte ; Codigo2: Buenos Nombres de variables Existe la excepción a las variables de iteración en los ciclos: For, While y Repeat Until, como por ejemplo: Codigo3: Buenos Nombres de variables para iteración 2 i, j, k : I n t e g e r ; { v a r i a b l e s de i t e r a c i ó n para v a r i o s c i c l o s } También hay un standard para las variables booleanas, por ejemplo, si sabemos que las variables booleanas solo pueden almacenar 2 valores distintos True y False. Entonces el standard para elegir el nombre en una variable booleana es no darles un nombre negativo, o nombres pocos claros, ya que los mismos pueden prestar confusión al momento de la codificación. Veamos un ejemplo: 2 No Encontrado : Boolean ; 3 No Error : Boolean ; 4 No Terminado : Boolean ; 5 Sexo : Boolean ; Codigo4: Malos Nombres para variables booleanas Autor: Bernardo Ortega Moncada 4

3.3. Nombres de funciones/procedimientos Los nombres de las funciones/procedimientos son muy importantes, ya que el mismo siempre describe que es lo que hace dicha función/procedimiento, pero de una forma tal, que sólo expresa la intención (o el qué) y no detalles de implementación (el cómo). Otro buen punto es no mezclar idiomas en los nombres de las funciones/procedimientos, es decir, mezclar el inglés con el español. Veamos algunos ejemplos de malos nombres para funciones/procedimientos: Codigo5: Malos Nombres para funciones/procedimientos 1 Function buscareliminar ( p o s i c i o n : I n t e g e r ) : I n t e g e r ; 2 Procedure findempleadodelete ( p o s i c i o n : I n t e g e r ) ; 3 Procedure bee ( ) ; 4 Procedure buscempel ( ) ; Codigo5: Buenos Nombres para funciones/procedimientos 1 Function busquedarapida ( p o s i c i o n : I n t e g e r ) : I n t e g e r ; 2 Procedure eliminarempleado ( p o s i c i o n : I n t e g e r ) ; 3 Function obtenersaldo ( unacuentabancaria : tr CuentaBancaria ) : Real ; 4 Function obtenerpromedio ( unvector : t a V e c t o r ) : Real ; 3.3.1. Cantidad de parámetros La cantidad de parámetros en las funciones/procedimientos tiene que ser como máximo 7, ya que quedó demostrado que al haber demasiados parámetros se presta a la confusión al momento de codificar dicha función/procedimiento y ademas es una muestra de la falla de modularización del programa 4. Comentarios en el código Los comentarios en el código son de vital importancia, al momento de explicar ciertas partes del código que creemos que es necesario explicar. Pero no todo es color de rosa en la vida de un informático, si bien los comentarios sirven para explicar lineas, también son un arma de doble filo, ya que un código extremadamente comentado, significa que dicho código es extremadamente complejo de entender y que su diseño es extremadamente retorcido. Lo cual implica una revisión y un re-diseño del mismo. NUNCA se debe comentar lo obvio, es decir repetir en el comentario lo que se dice en el código, como por ejemplo: Codigo6: Mal uso de los comentarios 1 VAR 2 edad : I n t e g e r ; 3 4 BEGIN {Cuerpo P r i n c i p a l d e l programa} 5 {Le asigno e l v a l o r 21 a l a v a r i a b l e edad } 6 edad := 21 7 END. Autor: Bernardo Ortega Moncada 5