Code Complete 2 Variables - PowerPoint PPT Presentation

1 / 19
About This Presentation
Title:

Code Complete 2 Variables

Description:

Establezca si va a usar 'num' o 'no' Chequee los Nombres de Variables ... Dim total as Double. total = 0.0. C digo que usa total. Dim finalizado as Boolean ... – PowerPoint PPT presentation

Number of Views:159
Avg rating:3.0/5.0
Slides: 20
Provided by: roque6
Category:
Tags: code | complete | dbl | variables

less

Transcript and Presenter's Notes

Title: Code Complete 2 Variables


1
Code Complete 2Variables
  • Roque Mocánroquemocan_at_gmail.com

2
1.Facilitando Declaraciones de Variables
  • Apague declaraciones implícitasOption
    ExplicitnumCuenta 100 print
    noCuenta
  • Declare todas las variablesaún cuando el
    compilador no se lo pida
  • Use Convenciones para los NombresEstablezca si
    va a usar num o no
  • Chequee los Nombres de VariablesUse una
    herramienta de Referencia Cruzada(Cross
    Reference) (también para ver si hay variables no
    utilizadas En VS 2005 pone unas olas verdes)

3
2.Inicializando Variables
  • Inicialice las variables al declararlasdim
    maxDeptos as int 14(Recordar cómo era con
    Pascal, que no limpiaba vars)
  • Inicialice variables tan cerca como sea posible
    de donde se utilizará por primera vezDim
    indexCuenta as IntegerDim total as DoubleDim
    finalizado as Boolean indexCuenta
    0total 0.0finalizado False
    Código que usa indexCuenta Código que usa
    total Código que usa finalizado

4
2.Inicializando Variables (b)
  • Inicialice variables tan cerca como sea posible
    de donde se utiliza (b)Dim indexCuenta as
    IntegerindexCuenta 0 Código que usa
    indexCuenta Dim total as Doubletotal 0.0
    Código que usa total Dim finalizado as
    Booleanfinalizado False Código que usa
    finalizado
  • Idealmente, declare y defina cada variable cerca
    a donde será utilizado por primera vez

5
2.Inicializando Variables (c)
  • Use final o const cuando sea posible
  • Ponga atención a contadores y acumuladoresUn
    error común es olvidar resetearlos antes de
    usarlos otra vez
  • Inicialice los data members de una clase en el
    constructor
  • Chequee la necesidad de reinicializaciónEjemplo
    en loops, o entre calls
  • Inicialice named constants una sola vezSi usa
    variables para emular constantes, inicializar en
    una rutina Startup(), pero las variables normales
    inicialícelas cerca de donde serán utilizadas
  • Tome ventaja de los mensajes de advertencia del
    compiladorVS 2005 pone unas olas verdes

6
2.Inicializando Variables (d)
  • Chequee parámetros de input a que sean válidos
  • Use un chequeador de acceso de memoria para
    chequear malos apuntadores (Lenguaje C)
  • Use configuración del compilador para inicializar
    automáticamente las variables
  • Inicialice memoria de trabajo al inicioMemory
    fillers pueden ser00xCC (breakpoint
    interrupt)0xDEADBEEF (Kernighan)

7
3.Scope
  • Localice Referencias a VariablesEl concepto de
    Spana 0b 0c 0b a 1b b /
    cPara b (1 0) / 2 0.5

8
3.Scope (b)
  • Live TimeDiferencia con SpanPuedo tener short
    spans pero long live time

9
3.Scope (c)
  • // Inicializa todas las variables
  • recordIndex 0
  • total 0
  • done false
  • while ( recordIndex lt recordCount )
  • recordIndex recordIndex 1
  • while ( !done )
  • if ( total gt projectedTotal )
  • done truerecordIndex (línea 28 línea 2
    1) 27total (línea 69 línea 3 1)
    67done (línea 70 línea 4 1) 67Promedio
    Live (27 67 67) / 3 54

10
3.Scope (d)
  • 25 recordIndex 0
  • while ( recordIndex lt recordCount )
  • recordIndex recordIndex 1
  • 62 total 0
  • 63 done false
  • while ( !done )
  • if ( total gt projectedTotal )
  • done truerecordIndex (línea 28 línea 25
    1) 4total (línea 69 línea 62 1)
    8done (línea 70 línea 63 1) 8Promedio
    Live (4 8 8) / 3 7

11
3.Scope (e)
  • Inicialice variables usados en un loop
    inmediatamente antes del loop en vez del inicio
    de la rutina
  • No asigne un valor a la variable
    hastainmediatamente antes de que el valor sea
    usado

12
3.Scope (f)
  • Agrupe enunciados relacionados GetOldData(
    oldData, numOldData )GetNewData( newData,
    numNewData )totalOldData Sum( oldData,
    numOldData )totalNewData Sum( newData,
    numNewData )PrintOldSummary( oldData,
    totalOldData, numOldData )PrintNewSummary(
    newData, totalNewData, numNewData
    )SaveOldDataSummary( totalOldData, numOldData
    )SaveNewDataSummary( totalNewData, numNewData
    )

13
3.Scope (g)
  • Agrupe enunciados relacionados GetOldData(
    oldData, numOldData )totalOldData Sum(
    oldData, numOldData ) PrintOldSummary( oldData,
    totalOldData, numOldData ) SaveOldDataSummary(
    totalOldData, numOldData ) GetNewData(
    newData, numNewData )totalNewData Sum(
    newData, numNewData )PrintNewSummary( newData,
    totalNewData, numNewData )SaveNewDataSummary(
    totalNewData, numNewData )
  • Rompa grupos de enunciados relacionados en
    rutinas separadas
  • Comience con la visibilidad más restringida,y
    expanda el scope sólo si es necesario

14
4.Persistencia
  • Es el Life Span de un dato- en la vida de un
    bloque de código o rutina- tanto tiempo como Ud.
    lo permita- por la vida del programa (Global,
    static)- para siempre
  • Use asertion o código de debug para chequear
    variables críticas a que tengan valores
    razonables
  • Póngale valores no razonables cuando termine de
    usarlos (por ejemplo, null)
  • Escriba código adumiendo que los datos no son
    persistentes. Por ejemplo, al salir de una
    rutina, no asumir que al re-entrar la rutina
    estará allí
  • Tenga el hábito de declarar e inicializar todos
    los datos antes de usarlos (en forma cercana)

15
5.Binding Time
  • Momento en que una variable y su valor es
    vinculado. El Binding puede darse en
  • Al momento de codificar (números mágicos)
  • Compile Time (constantes nombradas)
  • Load Time Carga (leer valores de Windows
    Registry o Java properties)
  • Object Instantiation Time (Por ejemplo, leer
    valor cada vez que se crea una ventana)
  • Just In Time (Por ejemplo, leer valor cada vez
    que se dibuja una ventana)

16
6. Relación entre Tipos de Datos y Estructuras
de Control
  • Michael Jackson dice que hay una conexión entre
    los tres tipos de datos y las estructuras de
    control correspondientes

17
7.Usando Cada Variable para Exactamente Un Uso
  • Use cada variable para sólo un propósito (a)//
    Calcular raíces en ecuación cuadráticatemp
    Sqrt( b b 4 a c )root0 ( -b temp
    ) / (2 a)root0 ( -b - temp ) / (2 a)
    // Intercambia raícestemp root0root0
    root1root1 temp

18
7.Usando Cada Variable para Exactamente Un Uso
  • Use cada variable para sólo un propósito (b)//
    Calcular raíces en ecuación cuadráticadiscriminan
    t Sqrt( b b 4 a c )root0 ( -b
    discriminant ) / (2 a)root0 ( -b -
    discriminant ) / (2 a) // Intercambia
    raícesoldRoot root0root0
    root1root1 oldRoot

19
7.Usando Cada Variable para Exactamente Un Uso
  • Evite variables con significados escondidos
    (hybrid coupling)
  • Por ejemplo, la variable pageCount indica el
    número de páginas impresas, a menos que tenga el
    valor -1, que significa error
  • La variable customerID representa un número de
    cliente, a menos que sea mayor que 500,000 lo
    que indica que es una cuenta delincuente
  • La variable bytesWritten indica los bytes
    grabados a disco, a menos que sea negativo, en
    cuyo caso es el número de disk drive
  • Asegúrese de que todas las variables declaradas
    hayan sido usadasSe ha correlacionado con tasas
    más altas de fallas
Write a Comment
User Comments (0)
About PowerShow.com