FORMATO Código: GPY.04.FO.
003
Versión: Clasificación:
ESTANDAR DE DESARROLLO DE SOFTWARE .NET
1 -
Macroproceso: Fecha de Vigencia:
Proceso: 15/08/2016
Estándar de Desarrollo de
Software .NET - Centria
Definición del estándar de desarrollo de software para Centria,
que se aplican a las soluciones .NET.
Agosto 2016
Estándar De ProgramaciónPágina 1 de 9
FORMATO Código: GPY.04.FO.003
Versión: Clasificación:
ESTANDAR DE DESARROLLO DE SOFTWARE .NET
1 -
Macroproceso: Fecha de Vigencia:
Proceso: 15/08/2016
Contenido
1. Información General.................................................................................................................................... 3
1.1. Objeto del documento.............................................................................................................................. 3
1.2. Generalidades: ......................................................................................................................................... 3
1.3. Pautas generales ...................................................................................................................................... 3
2. Estándares de nombres ............................................................................................................................... 3
3. Sangría y comentarios ................................................................................................................................. 5
4. Programación .............................................................................................................................................. 5
5. Control de Excepciones ............................................................................................................................... 6
6. Arquitectura ................................................................................................................................................ 6
6.1. Capa de Acceso a Datos: ........................................................................................................................... 6
6.2. Capa de Lógica de Negocio: ...................................................................................................................... 6
6.3. Capa de Presentación ............................................................................................................................... 7
7. Seguridad .................................................................................................................................................... 7
8. Integración con otros programas ................................................................................................................. 7
9. Conclusiones Generales ............................................................................................................................... 8
Estándar De ProgramaciónPágina 2 de 9
FORMATO Código: GPY.04.FO.003
Versión: Clasificación:
ESTANDAR DE DESARROLLO DE SOFTWARE .NET
1 -
Macroproceso: Fecha de Vigencia:
Proceso: 15/08/2016
1. Información General
1.1. Objeto del documento
El presente documento tiene como propósito indicar el estándar que todo desarrollo de software en .Net
debe cumplir para las aplicaciones de Centria. De esta manera, se garantiza que todas las aplicaciones .NET
sean consistentes, uniformes y de fácil entendimiento para revisiones y futuros mantenimientos.
1.2. Generalidades:
El lenguaje usado para los desarrollos en .Net es el C#, con framework 3.5 en adelante. Como base de datos
se trabaja con Sql Server 2008 en adelante.
El navegador por defecto usado en Centria es el IE versión 10 en adelante, aunque varios usuarios cuentan
también con Chrome, razón por la cual todo desarrollo web debe considerar estos 2 escenarios.
1.3. Pautas generales
Se debe hacer uso de interfaces (plantillas para los objetos que se usarán en la solución). Estas pueden
estar definidas en un solo archivo.
Usar un único archivo para la definición de estructuras, enumeración y/o constantes.
Nunca escribir código en duro. Toda solución debe ser configurable obteniendo los valores desde
archivos de configuración o tablas parámetro en la base de datos.
2. Estándares de nombres
Notación Pascal: el primer carácter de todas las palabras se escribe en mayúscula y el resto en minúscula.
Ejemplo: ColorDeTitulo.
Notación Camell: el primer carácter de todas las palabras, excepto la primera palabra se escribe en mayúscula
y el resto en minúscula. Ejemplo: colorDeTitulo.
Para el nombre de clases y métodos se usará notación Pascal.
public class CuentaBancaria
{
private void GenerarFactura()
{
Para las variables se usará notación Camell.
int totalVenta = 0;
Estándar De ProgramaciónPágina 3 de 9
FORMATO Código: GPY.04.FO.003
Versión: Clasificación:
ESTANDAR DE DESARROLLO DE SOFTWARE .NET
1 -
Macroproceso: Fecha de Vigencia:
Proceso: 15/08/2016
Para los parámetros de los métodos se usará el prefijo “p” con notación Camell.
private void GenerarPDF(string pCodigo)
{
Para las interfaces se usará el prefijo “i” con notación Pascal.
public interface ICliente
{
No usar la notación Húngara (prefijos con el tipo de dato de las variables).
No se utilizará el carácter “ñ” ni el “Ñ” para la nombrar los elementos.
No incluir el nombre de la clase en el nombre de un atributo Ejemplo: Customer.Name no
Customer.CustomerName
Los nombres de las clases no deben comenzar con valores numéricos.
Los nombres de las clases no deben ser totalmente en Mayúsculas.
No usar las palabras reservadas del lenguaje como nombres de objetos. Ejemplo: enum, else, this, static,
etc.
No usar nombres de variables de un solo caracter a excepción de aquellas usadas en ciclos de repetición.
Sólo las variables globales deben comenzar con guión (_).
Los nombres de los nombres de espacio deben ser iguales al nombre del proyecto al que pertenecen.
Los nombres de las clases, métodos y funciones deben seguir el sgte. modelo:
<acción/verbo en español><nombre entidad o descripcion>
ListarCliente()
AgregaCliente()
Se usarán los sgtes. prefijos para los controles:
Control Prefijo
Label lbl
Textbox txt
GridView grv
Button btn
Imagebutton Imb
Hyperlink Hpl
DropDownList Ddl
ListBox Lst
Checkbox chk
CheckboxList cbl
Image Img
Panel Pan
Radiobutton rdb
Estándar De ProgramaciónPágina 4 de 9
FORMATO Código: GPY.04.FO.003
Versión: Clasificación:
ESTANDAR DE DESARROLLO DE SOFTWARE .NET
1 -
Macroproceso: Fecha de Vigencia:
Proceso: 15/08/2016
3. Sangría y comentarios
Se debe usar TAB para las sangrías con indización de tamaño 4.
Los comentarios deben estar al mismo nivel del código.
// Obteniendo lista de opciones de funcionalidad
List<BEGeneral> func = new BLGeneral().ListarOpcionesFuncionalidad(hfCodSociedad.Value);
Las llaves ({}) deben estar al mismo nivel del código fuera de las llaves.
if ( ... )
{
//código
//...
}
Siempre utilizar las llaves ({}) en una sentencia condicional, aunque esta sea de una sola línea.
Declarar cada variable en una nueva línea, no en la misma sentencia.
Usar #region para agrupar porciones de código.
Los comentarios no deben ser extensos: un comentario largo hace que se pierda el seguimiento del código.
Escribir comentarios significativos sobre el propósito del código de una clase, método o bloque de código.
Por cada método o clase definida pero aún no implementada se debe comentar con el texto // No
implementado
public List<ProveedorBE> ListarProveedor(string pTipo, string pBusqueda)
{
// No implementado
}
4. Programación
Usar los tipos de datos especificados por c#, en lugar de los tipos de datos definidos en el espacio System.
int periodo, en lugar de Int32
string apellido, en lugar de String
Usar String.IsNullOrEmpty para evaluar si una variable del tipo cadena es nula o vacía.
if (String.IsNullOrEmpty(apellido))
Sólo cuando el evento de un control es invocado desde otro método o acción de otro objeto. Entonces se
debe crear un nuevo método que será usado por ambos controles u objetos.
Usar la clase StringBuilder para concatenar cadenas y los métodos Append() y AppendFormat() para un uso
más eficiente de la memoria.
Estándar De ProgramaciónPágina 5 de 9
FORMATO Código: GPY.04.FO.003
Versión: Clasificación:
ESTANDAR DE DESARROLLO DE SOFTWARE .NET
1 -
Macroproceso: Fecha de Vigencia:
Proceso: 15/08/2016
5. Control de Excepciones
Todo error de la solución debe ser controlado por medio de las sentencias:
try
{
//...
}
catch (Exception ex)
{
//...
}
finally
{
//...
}
Nunca se debe dejar un bloque try/catch vacío.
Evitar anidar bloques try/catch con otro bloque de este tipo.
Sólo usar el bloque finally para liberar recursos utilizados en el bloque try/catch.
6. Arquitectura
Usar una arquitectura multicapa. Las capas mínimas que debería tener toda solución son:
Capa de Acceso a Datos.
Capa de Lógica de Negocio.
Capa de Presentación.
6.1. Capa de Acceso a Datos:
No usar ORM.
Toda interacción a la base de datos será por medio de procedimientos almacenados.
No usar DataSets, en su lugar usar listas genéricas que hagan referencia a clases del tipo Entidades.
Usar el espacio de acceso a datos System.Data.Common
Usar la clase DbProviderFactories, DbConnection y DbCommand.
Los procedimientos almacenados no deben recibir parámetros del tipo XML.
El manejo de transacciones se realiza por medio del lenguaje .NET, los procedimientos almacenados no
deben incluir dichas sentencias.
6.2. Capa de Lógica de Negocio:
Las clases de esta capa deben heredar de sus correspondientes Interfaces.
Estándar De ProgramaciónPágina 6 de 9
FORMATO Código: GPY.04.FO.003
Versión: Clasificación:
ESTANDAR DE DESARROLLO DE SOFTWARE .NET
1 -
Macroproceso: Fecha de Vigencia:
Proceso: 15/08/2016
6.3. Capa de Presentación
MVC de preferencia SPA y con razor como motor de programación en la vista; o webform pero evitando el
mayor uso posible de Postback y usando viewstate en lugar se sesiones.
Se debe usar HTML5, bootstrap, jquery, css.
No se usan alert() de javascript para mostrar mensajes.
Todo aspecto de diseño (color, tipo y tamaño de letra, etc) se debe realizar en los archivos css de la solución.
Se debe incluir el siguiente tag en las MasterPage como consideración de los navegadores IE 10 en adelante:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
Los nombres de las clases entidades del negocio deben ser en singular y terminar con el prefijo BE.
Las clases de entidades pueden ir en un solo archivo llamado Entities.
Los nombres de las clases lógica del negocio deben ser en singular y terminar con el prefijo BL.
Las clases de lógica del negocio van en archivos individuales por clase y el nombre de la clase coincide con
el archivo.
Los nombres de las clases de acceso a datos deben ser en singular y terminar con el prefijo DL.
Las clases de acceso a datos van en archivos individuales por clase y el nombre de la clase coincide con el
archivo.
7. Seguridad
La configuración de correo electrónico se debe realizar en el archivo web.config.
Toda aplicación que sea del tipo pública, deberá aplicar SSL (https).
Toda aplicación debe tener integración con el AD.
Toda aplicación debe generar un archivo log del tipo texto plano, considerando los sgtes. atributos: fecha y
hora, página, mensaje detallado, usuario.
Todo envío de datos de una página a otra debe usar el método POST. Si es necesario usar el método GET,
este debe ir encriptado si contiene información del usuario.
Todo acceso al sistema es por la página principal. El sistema debe redirigir a dicha pantalla si se intenta
acceder desde cualquier página de la solución.
Al término de la sesión, el sistema debe redirigir a la página de inicio.
8. Integración con otros programas
SAP:
- Se realiza por medio de RFC, toda configuración de nombres y parámetros se realiza por tablas de la base
de datos.
- Se usan las librerías sapnco.dll y sapnco_utils.dll
SharePoint:
- Se realiza usando la librería: Microsoft.SharePoint.dll
Estándar De ProgramaciónPágina 7 de 9
FORMATO Código: GPY.04.FO.003
Versión: Clasificación:
ESTANDAR DE DESARROLLO DE SOFTWARE .NET
1 -
Macroproceso: Fecha de Vigencia:
Proceso: 15/08/2016
PDF:
- Se realiza usando la librería: itextsharp.dll
9. Conclusiones Generales
El estándar de programación que se aplica a todo desarrollo de software es importante dado que define la
forma de cómo crear las aplicaciones .NET para el negocio, a fin contar con un producto independiente del
proveedor para revisiones, mantenimientos y mejoras. Por otro lado, permite aplicar buenas prácticas y
controles de seguridad en los desarrollos.
Estándar De ProgramaciónPágina 8 de 9
FORMATO Código: GPY.04.FO.003
Versión: Clasificación:
ESTANDAR DE DESARROLLO DE SOFTWARE .NET
1 -
Macroproceso: Fecha de Vigencia:
Proceso: 15/08/2016
Elaborado por: Aprobador por: Aprobado por:
Julio Salvatierra (Centria) Luis Benites (Centria)
Analista Senior de Soluciones TI Jefe de Proyectos
Firma Firma Firma
Estándar De ProgramaciónPágina 9 de 9