Estandares de Codificación c#

download Estandares de Codificación c#

of 19

Transcript of Estandares de Codificación c#

Introduccin ......................................................................................................................... 2 Propsito de definir estndares de codificacin y mejores prcticas .................................... 2 Cmo controlar el uso del estndar propuesto en el equipo de trabajo ................................ 3 Convencin de nombres y estndares ................................................................................. 3 Las reglas de nomenclatura para el cdigo son las siguientes: ............................................ 4 Notacin general:.......................................................................................................... 5 Identacin y espacios ................................................................................................... 7 Buenas prcticas de programacin ............................................................................. 10 Arquitectura ....................................................................................................................... 15 ASP.NET ........................................................................................................................... 16 Comentarios ...................................................................................................................... 16 Uso de Excepciones .......................................................................................................... 17 Bibliografa ......................................................................................................................... 19

Estndar de codificacin para C# y buenas prcticas de programacinIntroduccinCualquier persona puede escribir cdigo. Con unos pocos meses programando, cualquier persona puede escribir aplicaciones que corren. Hacer funcionar una aplicacin es relativamente sencillo, pero escribirla correctamente requiere de un mayor esfuerzo y conocimiento.

Escribir cdigo de calidad es un arte y el objetivo de este documento es dar los lineamientos para ser exitosos en esa tarea.

Existen diferentes definiciones de lo que es un buen cdigo. Sin embargo, y para no entrar en discusiones tericas, para todo efecto, las pautas bsicas que se deben guiar la escritura de cdigo son las siguientes:

El cdigo debe ser fcilmente legible La forma en que est escrito el cdigo debe facilitar su mantenimiento El cdigo debe ser eficiente en todo sentido

Propsito de definir estndares de codificacin y mejores prcticasPara desarrollar aplicaciones confiables y escalables, se deben seguir estndares de programacin y buenas prcticas

La convencin de nombres, los estndares de codificacin y las buenas prcticas descritos en este documento son un compilado de las guas de Microsoft, as como de otros trabajos y de la experiencia de los autores del documento.

Existen muchos estndares en la industria de la programacin. Ninguno de ellos es bueno o malo, el criterio de seleccin del estndar o de la aproximacin adecuada depende de las necesidades y de la naturaleza de los proyectos que se necesitan desarrollar.

Este documento pretende definir un estndar conveniente para el desarrollo del proyecto ADO, de acuerdo a la arquitectura propuesta y los lenguajes de programacin seleccionados.

Cmo controlar el uso del estndar propuesto en el equipo de trabajoDado que los equipos de trabajo para los proyectos estn conformados por diferentes roles y niveles de experticia, el primer paso para adoptar el estndar debe ser lograr el consenso de todas las personas involucradas, en cuanto a la pertinencia de las definiciones establecidas y el compromiso para trabajar con ellas.

La mejor aproximacin para lograr esto es realizar una reunin de grupo para oficializar el documento. En esta reunin se deben discutir los diferentes puntos de vista y se debe lograr la concertacin acerca de si todas las guas propuestas son vlidas o si por el contrario se deben excluir ciertas pautas del documento o aadir algunas otras que hagan falta. Esta discusin debe ser convocada y guiada por el lder tcnico o el gerente del proyecto.

Despus de tener la versin oficial del documento y de iniciar el desarrollo, se deben incluir dentro del cronograma del proyecto, actividades puntuales para realizar las revisiones de cdigo. Se recomiendan 3 tipos de revisiones:

1.

2.

3.

Revisin de pares otro miembro del equipo revisa el cdigo para asegurar que se estn siguiendo los estndares. Este nivel de revisin puede tambin incluir algunas pruebas unitarias. Cada archivo en de la solucin debe pasar por este proceso. Revisin del arquitecto El arquitecto debe revisar los mdulos principales de cada proyecto para asegurar que estn acordes con el diseo propuesto y que no existe ningn error grave que pueda afectarlo. Revisiones grupales aleatoriamente se debe seleccionar uno ms archivos para realizar una revisin grupal de los mismos (se sugiere que esto se realice una vez por semana). Se debe distribuir una copia impresa de los archivos una hora antes de la reunin. El grupo debe revisar el material y llegar a la reunin con las observaciones o los puntos para la discusin. En la reunin se debe explorar cada seccin del cdigo y se le debe permitir a cada miembro del grupo dar sus observaciones o sugerencias acerca de cmo esa pieza de cdigo podra ser escrita de una mejor manera (se debe tener en cuenta resaltar el buen trabajo de los desarrolladores y tambin asegurarse de no ofender ni reprochar a nadie en las discusiones).

Convencin de nombres y estndares

Nota : Los trminos notacin Pascal y notacin Camel son usados a lo largo de este documento. Notacin Pascal La primera letra de todas las palabras debe ir en mayscula y los otros en minscula. Ejemplo: BackColor Notacin Camel El primer caracter de todas las palabras, excepto el de la primera palabra deben ir en mayscula y las otras en minscula. Ejemplo: backColor

Las reglas de nomenclatura para el cdigo son las siguientes:1. Todos los nombres de clases, variables, constantes, parmetros y dems identificadores se deben escribir en idioma Ingls.

2.

Uso de notacin Pascal para nombres de clasespublic class HelloWorld { ... }

3.

Uso de notacin Pascal para nombres de mtodosvoid SayHello(string name) { ... }

4.

Uso de notacin Pascal para nombres de variables miembro de clasePropiedades:

DateTime InsertDate { get; set; }

Variables miembro de clase que no se exponen:

private String _FirstName

5.

Uso de notacin Camel para variables y parmetros de mtodosint totalCount = 0; void SayHello(string lastName) { string fullMessage = "Hello " + name; ... }

6.

Uso de notacin Pascal en las enumeraciones (tanto en la definicin como en sus miembros):public enum DBActionEnum { Save, Delete }

Las enumeraciones que tengan alcance global (que sean definiciones que apliquen a la lgica de ms de una clase deben colocarse en un archivo .cs separado.

Las enumeraciones que solo aplican para un clase puntual, se deben colocar dentro de la misma clase.

7.

Uso del prefijo I con notacin Pascal para interfaces ( Ejemplo: IEntity )

Notacin general:8.

Emplee nombres de variables significativos y auto-descriptivos. No utilice abreviaciones:Permitido:

string address int salary

No permitido:

string nam string addr int sal

9.

Por ningn motivo se permite el uso de caracteres simples para nombres de variables, tales como: i, n, s etc. En caso de requerir ndices o variables temporales/auxiliares en aserciones de control use nombres como: index, temp

La nica excepcin permitida a esta regla es en las estructuras para ciclos como el for:

for ( int i = 0; i < count; i++ ) { ... }

10. Por ningn motivo use underscores (_) para nombres de variables dentro de mtodos.

11. Todas las variables miembro de clase que no se expongan como propiedades deben ir con el prefijo underscore (_) para que estas puedan ser identificadas o diferenciadas de las otras variables local (Ejemplo: private String _FirstName). 12. Emplee la notacin abreviada del framework 2.0 y superiores para definir propiedades Ejemplo:

DateTime InsertDate { get; set; } int InsertENTUserAccountId { get; set; }

13. Las variables boolean deben ir con el prefijo is (Ejemplo: private bool _isFinished).

14. Los espaciones de nombres o namespaces deben serguir el siguiente estndar:...Ejemplo:

AmadeusLATAM.ADO.BoletotalDispatcher 15. Use un prefijo adecuado para los elementos del la capa de usuario UI para que las variables de esta capa puedan ser fcilmente identificables.

a.

Usar el prefijo correspondiente para cada elemento de la capa de UI. A continuacin se presenta una lista resumida:

Tipo de Control Label TextBox DataGrid Button ImageButton Hyperlink DropDownList

Prefijo para el nombre lbl txt dtg btn imb hlk ddl

ListBox DataList Repeater Checkbox CheckBoxList RadioButton RadioButtonList Image Panel PlaceHolder Table Validators

lst dtl rep chk cbl rdo rbl img pnl phd tbl val

16. El nombre del archivo debe coincidir con el nombre de la clase (Ejemplo: para la clase HelloWorld,

el nombre del archivo correspondiente debe ser HelloWorld.cs)

Identacin y espacios1. Use tabulaciones para identar el cdigo. Por ningn motivo use ESPACIOS. Defina el tamao de la tabulacin como 4 espacios.

2.

Los comentarios deben estar al mismo nivel del cdigo (use el mismo nivel de identacin).

Forma correcta:

// Format a message and display string fullMessage = "Hello " + name; DateTime currentTime = DateTime.Now; string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString(); MessageBox.Show ( message );

Forma incorrecta:

// Format a message and display string fullMessage = "Hello " + name; DateTime currentTime = DateTime.Now; string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString(); MessageBox.Show ( message );

3.

Las llaves ( {} ) del cdigo que las genera. El cdigo dentro de ellas debe ir identado tal como se muestra:

4.

Use un interlineado para separar bloques de cdigo:Forma correcta:

bool SayHello ( string name ) { string fullMessage = "Hello " + name; DateTime currentTime = DateTime.Now; string message = fullMessage; MessageBox.Show ( message ); if ( ... ) { // Do something // ... return false; } return true; }

Forma incorrecta:

bool SayHello (string name) { string fullMessage = "Hello " + name; DateTime currentTime = DateTime.Now; string message = fullMessage; MessageBox.Show ( message ); if ( ... ) { // Do something // ... return false; } return true; }

5.

Debe haber una y solo una lnea en blanco de separacin entra cada mtodo dentro de la clase.

6.

Los parntesis deben ir en separados a un espacio de las instrucciones if, for etc. y la llave queabre el bloque de cdigo debe ir en la siguiente lnea:

Forma correcta:

if ( ... ) { // Do something }

Forma incorrecta:

if( ... ) { // Do something }

7.

Coloque un espacio en blanco antes y despus de cada sentencia dentro de los if, for etc.Forma correcta:

if ( showResult == true ) { for ( int i = 0; i < 10; i++ ) { // } }

Forma incorrecta:

if(showResult==true) { for(int { // } }

i= 0;i