Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NET
Las técnicas de codificación incorporan muchos aspectos del desarrollo del software.
Aunque generalmente no afectan a la funcionalidad de la aplicación, sí contribuyen a
una mejor compresión del código fuente. En esta fase se tienen en cuenta todos los
tipos de código fuente, incluidos los lenguajes de programación, de marcado o de
consulta.
GENERALES
Para conservar recursos sea muy selectivo en la elección del tipo de dato,
asegúrese que el tamaño de una variable no sea excesivamente grande. Por
ejemplo en los ciclos for es mejor, en la mayoría de las veces utilizar un tipo de
dato tipo short que int. (Aunque el manejo de tipos int esta optimizado para
.NET)
Mantenga el tiempo de vida de las variables tan corto como sea, esto es muy
importante por ejemplo cuando se utiliza un recurso finito como una conexión
a una Base de Datos.
Mantenga el scope de las variables tan corto como sea posible, esto sirve para
evitar confusiones, mejorar la mantenibilidad y además minimiza la
dependencia, es decir, si por algún motivo se comete el error de borrar una
variable es más fácil de encontrar el error si esta tiene un scope más pequeño.
Use los procedimientos y variables con un solo propósito. Evite crear
procedimientos multipropósito que lleven a cabo una variedad de funciones no
relacionadas.
Dentro de una clase, evite el uso de variables públicas, mejor utilice
procedimientos y propiedades que accedan a dichas variables (privadas), así
provee una capa de encapsulación y brinda la posibilidad de validar valores de
cambio sobre las mismas.
Cuando utilice objetos pooled de MTS(Microsoft Transaction Server), adquiera
los recursos lo mas tarde posible y libérelos lo mas pronto como sea posible,
esto repercute en el manejo de recursos.
Use siempre un esquema transaccional como MTS o SQL Server y minimice el
scope y la duración de las transacciones.
Cuando se trabaje en un entorno web distribuido (aldea web), tenga cuidado de
almacenar información en variables de sesión ASP ya que el estado de sesión es
almacenado siempre en una sola maquina, considere mejor almacenar dicha
información en una base de datos.
No abra conexiones a datos usando credenciales específicas de usuario, ya que
estas no podrán ser reutilizadas por el pool de conexiones.
Evite el uso de conversión de tipos o casting ya que esto puede generar
resultados imprevistos, sobre todo cuando dos variables están involucradas en
una sentencia, utilice el cast sólo en situaciones triviales, cuando este no sea el
caso asegure de comentar la razón por la cual lo hizo.
Use siempre rutinas de manejo de excepciones. Esto es discutible también.
Sea específico cuando declare objetos que puedan generar colisión, por ejemplo
si tiene dos métodos con el mismo nombre en diferentes namespaces escríbalos
con el nombre completo incluyendo el del namespace.
Evite el uso de variables en el ámbito de aplicación (web).
Use siempre sentencias Select Case o Switch en lugar de utilizar sentencias if
then repetitivas.
Libere explícitamente las referencias a objeto.
Siempre que sea posible utilice polimorfismo en vez de cláusulas Switch o
Select.
El esquema de nombres es una de las ayudas más importantes para entender el flujo
lógico de una aplicación. Un nombre debe más bien expresar el "qué" que el "cómo". Si
se utiliza un nombre que evite referirse a la implementación se estará conservando la
abstracción de la estructura ya que la implementación está sujeta a cambios, de esta
manera se describe que hace la estructura y no como lo hace.
Heinsohn.FabricaSw.Papelsa.AccesoaDatos
Heinsohn.FabricaSw.Proyecto.IUWeb
Variables
1
Programación Orientada a Objetos
Incluso para el caso de una variable de poco uso, que deba aparecer sólo en
unas cuantas líneas de código, emplee un nombre descriptivo. Utilice nombres
de variables de una sola letra, como i o j sólo para índices (ciclos for).
No utilice números o cadenas literales, como por ejemplo For i = 1 To 7. En su
lugar, emplee constantes con nombre, del tipo For i = 1 To Enumeracion.length
para que resulten fáciles de mantener y comprender.
Parámetros
Los parámetros siguen el mismo estándar de las variables
Tablas
Cuando ponga nombres a tablas, hágalo en PLURAL. Recuerde que es un
conjunto de registros. Por ejemplo una tabla que contenga registros que
identifiquen a una persona debería llamarse Personas.
Cuando ponga nombre a las columnas de las tablas, no repita el nombre de la
tabla; por ejemplo, evite un campo llamado EstudianteApellido de una tabla
llamada Estudiante. (Igual que con las propiedades de una clase).
No incorpore el tipo de datos en el nombre de una columna.
Dele un nombre adecuado al campo que va a utilizar como identificador de la
tabla, no utilice el símbolo “_“ en el nombre de este identificador. (p.e.
“Codigo”, “Id”, “Identificador”)
No ponga prefijos sp a los procedimientos almacenados, ya que se trata de un
prefijo reservado para la identificación de procedimientos almacenados de
sistemas.
No ponga prefijos fn_ a las funciones definidas por el usuario, ya que se trata
de un prefijo reservado para funciones integradas.
No ponga prefijos xp_ a los procedimientos almacenados extendidos, ya que se
trata de un prefijo reservado para la identificación de procedimientos
almacenados extendidos.
Los nombres de los campos deben empezar por Mayúscula.
Varios
Minimice el uso de abreviaturas; pero si las emplea, use coherentemente las que
haya creado. Una abreviatura sólo debe tener un significado y, del mismo
modo, a cada palabra abreviada sólo debe corresponder una abreviatura. Por
ejemplo, si utiliza "min." para abreviar "mínimo", hágalo siempre así, y no use
también "min." para abreviar "minuto".
Cuando nombre un procedimiento que retorne un valor, incluya además de la
acción, la entidad que será devuelta; LeerArchivo, ConsultarSaldo,
ObtenerResumen.
Los archivos y los nombres de carpetas, al igual que los nombres de
procedimientos, deben describir claramente su finalidad.
Evite reutilizar nombres para elementos diferentes, como por ejemplo una
rutina llamada ProcesoLavado() y una variable iLavado.
Evite el uso de caracteres como ‘$’ o ‘%’.
No use nombres que sean dependientes del tipo de variable, control o clase, en
cambio utilice, como ya se dijo nombres que describan el propósito de la
variable control o propiedad.
Evite este comportamiento void Escribir(double doubleValor), en su lugar
utilice void Escribir(double valor).
Comentarios
Existen dos tipos de documentación de software: externa e interna. La documentación
externa, como por ejemplo las especificaciones, los archivos de ayuda y los documentos
de diseño, se deben mantener fuera del código fuente. La documentación interna está
formada por los comentarios que los programadores escriben dentro del código fuente
durante la fase de desarrollo.
Uno de los problemas de la documentación de software interna es garantizar que se
mantienen y actualizan los comentarios al mismo tiempo que el código fuente. Aunque
unos buenos comentarios en el código fuente no tienen ningún valor en el tiempo de
ejecución, resultan valiosísimos para un programador que tenga que mantener una
parte de software particularmente compleja.
Formato
El formato hace que la organización lógica del código sea más clara. Si toma el tiempo
de comprobar que el código fuente posee un formato coherente y lógico, le resultará de
gran utilidad a usted y a otros programadores que tengan que descifrarlo.
...
Cuando tenga que dividir una línea en varias, aclare que el código sigue en la
línea de más abajo mediante un operador de concatenación colocado al final de
cada línea, y no al principio.
Siempre que sea posible, no coloque más de una instrucción por línea, a
excepción de los bucles.
FROM Clientes
SELECT
Nombre,
Apellido,
Identificación
FROM
…
Siempre utilice los tipos nativos de cada lenguaje y no los del CTS.
Evite hacer unboxing y boxing secuencialmente, es decir, en la misma rutina.
No compare strings con “” o con string.Empty, use la propiedad length del string:
If(String.Length == 0)
Use el operador condicional ternario (?) solo en casos triviales, cuando sean casos
complejos evítelo.
Evite comparar variables booleanas contra false o true, en vez de eso utilice el
operador de negación:
Mejor use:
If(puedeEliminarse) If(!puedeEliminarse)
Adicionales
}
catch (Exception e)
{
throw (no use throw e)
}
Use los bloque finally solo para realizar funciones de limpieza y liberación de
recursos.
Utilice siempre que puedabloques Using sobretodo cuándo se trata de
utilización de recursos del sistema. Recuerde que los bloques Using se encarga
de liberar los recursos implícitamente.
Siempre que sea posible prefiera la validación al manejo de excepciones:
Try
{
conexión.Close()
}
catch (Exception a)
{
... Manejo de excepción
}
cámbielo por
if(conexión.State() != Conecction.State.Closed )
{
con.Close();
}