2. ¿Cuáles son las ventajas de usar tipos
enumerados ?
Menciona el propósito de nombrar constantes
¿Por qué los arreglos deben manejarse como
estructuras de secuencia?
¿Cual es la importancia de la creación de tipos
propios?
Menciona las consideraciones al usar tipos
definidos.
3. Usar tipos enumerados para la legibilidad. En
vez de escribir:
if chosenColor=1
puedes escribir:
if chosenColor= Color_Red
4. Usar tipos enumerados para mayor confiabilidad.
En pocos lenguajes como ADA, un tipo enumerado
le permite al compilador mas desempeño por
medio del chequeo de tipos que este lo haga con
valores enteros y constantes. Con constantes
nombradas el compilador no tiene manera de
saber que los valores legales solamente son
Color_Red, Color_Green y Color_Blue.
El compilador no hara objeción en sentencias como
color= Country_England o country=
Output_Printer.
5. Si usas un tipo enumerado , declarando una
variable Color, el compilador permitirá a la
variable ser asignada solo los valores Color_Red,
Color_Green y Color_Blue.
Usar tipos enumerados para facilitar la
modificación. Si encontramos un defecto en
nuestro “1 singinfica rojo, 2 significa verde, 3
significa azul” tendríamos que ir a través de todo
nuestro código e ir cambiando los 1’s, 2’s, 3’s, y asi
sucesivamente. En cambio si utilizamos un tipo
enumerado, puedes seguir añadiendo elementos a
la lista con sólo ponerlos en la definición del tipo y
recompilar.
6. Usar tipos enumerados como una alternativa a las
variables booleanas. A menudo, una variable booleana no
es lo suficientemente rica para expresar el significado que
se necesita. Por ejemplo, suponiendo que se tiene una
rutina que devuelve el valor de true si la tarea se
desempeño correctamente y falso de otra manera.
Despues te das cuenta que tienes dos maneras posibles de
que la rutina devuelva el valor de falso. Una cuando la
tarea fallo y los efectos se limitan a la rutina misma. Y la
otra es cuando la tarea fallo y causa un error fatal que
necesita ser propagado al resto del programa. En este caso
un tipo enumerado con los valores: Status_Succes,
Status_Warning y Status_FatalError, podría ser mas
usable que una simple variable booleana con los valores
true y false.
7. Checar valores invalidos. Cuando comparas un tipo
enumerado en un if o case (switch en java), checa valores
invalidos. Usa la clausula else en una sentencia case para
atrapar valores invalidos.
Select Case screenColor
Case Color_Red
...
Case Color_Blue
...
Case Color_Green
...
Case Else
DisplayInternalError( False, "Internal Error 752: Invalid color." )
End Select
8. Definir la primera y la ultima entrada de una enumeración para usarlas como limite en
los ciclos. Esto permite escribir un bucle que recorre los elementos de una enumeración.
Configure el tipo enumerado utilizando valores explícitos, como se muestra a
continuación:
Public Enum Country
Country_First = 0
Country_China = 0
Country_England = 1
Country_France = 2
Country_Germany = 3
Country_India = 4
Country_Japan = 5
Country_Usa = 6
Country_Last = 6
End Enum
' compute currency conversions from US currency to target currency
Dim usaCurrencyConversionRate( Country_Last ) As Single
Dim iCountry As Country
For iCountry = Country_First To Country_Last
usaCurrencyConversionRate( iCountry ) = ConversionRate( Country_Usa, iCountry )
Next
9. Reservar la primera entrada de un tipo enumerado como invalido.
Muchos compiladores asignan al primer elemento de un tipo enumerado
el valor 0. Declarar el elemento que se asigna a 0 para ser inválida ayuda a
atrapar variables que no se ha inicializado correctamente, ya que son más
propensos a ser 0 que cualquier otro valor no válido.
Public Enum Country
Country_InvalidFirst = 0
Country_First = 1
Country_China = 1
Country_England = 2
Country_France = 3
Country_Germany = 4
Country_India = 5
Country_Japan = 6
Country_Usa = 7
Country_Last = 7
End Enum
10. Definir con precision, como el primer y el ultimo elementos
se van a utilizar en la codificación estándar del proyecto, y
usarlas consistentemente.
Tener cuidado con las trampas de la asignación de valores
explícitos a los elementos de una enumeración. Si se declara
un índice de bucle de tipo Color y trató de recorrer a través
de colores, lo haría circular a través de los valores no válidos
de 3, 5, 6 y 7, así como los valores válidos de 1, 2, y 4.
enum Color {
Color_InvalidFirst = 0,
Color_Red = 1,
Color_Green = 2,
Color_Blue = 4,
Color_InvalidLast = 8
};
11. SI TU LENGUAJE NO TIENE TIPOS ENUMERADOS…
Si tu lenguaje no le da soporte a los tipos de datos enumerados, tu puedes simularlos con variables globales de clase:
// set up Color enumerated type
class Color {
private Color() {}
public static final Color Red = new Color();
public static final Color Green = new Color();
public static final Color Blue = new Color();
}
// set up Country enumerated type
class Country {
private Country() {}
public static final Country China = new Country();
public static final Country England = new Country();
public static final Country France = new Country();
public static final Country Germany = new Country();
public static final Country India = new Country();
public static final Country Japan = new Country();
}
// set up Output enumerated type
class Output {
private Output() {}
public static final Output Screen = new Output();
public static final Output Printer = new Output();
public static final Output File = new Output();
}
12. Este particular metodo de creacion de tipos
enumerados es también typesafe, porque cada
tipo es declarado como una clase. El compilador
checara sentencias invalidas como Output output =
Country.England.
13. Una constante nombrada es como una variable,
excepto que no se puede cambiar la constante
de valor una vez que lo hayas asignado.
1000 MaximumEmployees
Hay veces que declaramos un arreglo que
termina siendo más grande de lo que tu
pensabas que ibas a necesitar y luego de
correrlo se queda fuera del espacio
14. Cuando se cambia el tamaño de un arreglo, tu
solamente cambias la definición de la
constante que tu usaste para declarar el arreglo.
este punto único de control tiene un largo
camino por recorrer para hacer del software
realmente “soft” fácil de trabajar y de cambiar
15. Tener el habito de usar constantes nombradas
ayuda a conservar la legibilidad y
mantenibilidad en declaraciones de datos .
Ejemplo:
16. En el bucle de abajo podemos ver un ejemplo
donde nos preguntamos qué quiere decir el 12
aparenta que el 12 hace referencia a los meses
del año. Pero estamos seguros 100% de que es
así Quieren apostar sus laps?
17. es mejor aclararlo con una constante nombrada
Este ejemplo está casi completo a excepción
por una cosa..
18. podemos ir aún más lejos mediante el uso de
un tipo enumerado:
este en esto momento donde ya no debe haber
más dudas sobre el propósito del bucle
19. En resumen utiliza constantes con nombre aun
cuando creas que es una literal segura si no
estás seguro de haber erradicado dichos errores
utiliza un editor de texto para verificar que no
los estés usando accidentalmente.
20. Simular constantes nombradas con variables con
ámbito apropiadamente o clases
Si tu lenguaje no soporta constantes
nombradas , tu tendrás que crear las tuyas.
Utilice constantes con nombre constantemente
Es muy peligroso usar constantes con nombre
en un lugar y en otro un literal para
representar la misma entidad
21. Un arreglo contiene un grupo de elementos, todos
ellos del mismo tipo y son directamente accesados
mediante un índice
22. Asegúrese de que todos los índices del arreglo
están dentro de los límites del arreglo.
Piense en arreglos como estructuras
secuenciales.
Compruebe los puntos extremos de arreglos.
Si un arreglo es multidimensional, asegúrese
de que sus subíndices se utilizan en el
orden correcto
23. Cuidado con los índices cruzados
Meter un elemento adicional al final de un
arreglo
24. Es una de las capacidades más poderosas que
un lenguaje le puede dar para aclarar su
comprensión de un programa.
Si estás usando C, C + + u otro lenguaje que te
permite tipos definidos por el usuario,
aprovecha de ellos!
25.
26. Todo lo que tiene que cambiar es la definición de
tipo.
27. Suponga que está creando una nómina
sistema en el que los nombres de los empleados
son un máximo de 30 caracteres. Su
usuarios han dicho que nadie tiene un nombre
más largo de 30 caracteres. Hacer
que en el código el número 30 se mantenga a lo
largo de su programa?
28. Es prudente definir un nombre constante que indica la longitud de la
cadena o matriz y luego usar el nombre constante en la definición de
tipo.
29. •Para realizar las modificaciones más fácil.
• Para evitar la distribución de la información
excesiva.
• Para aumentar la fiabilidad.
• Para compensar las deficiencias del lenguaje.
30. Crear tipos con nombres funcionalmente
orientados
BigInteger LongString
Evite los tipos predefinidos
coordenada x; int x;
31. No volver a definir un tipo predefinido
Integer ¿?
Definir tipos sustitutos para la portabilidad
Maquina de 16 bits
typedef short int intNumber;
typedef float floatNumber;
Maquina de 32 bits
typedef long int intNumber;
typedef double floatNumber;