Está en la página 1de 30

Normas de

Programacin
del Servicio
Nacional de
Menores

Versin 3.0

(Actualizado Diciembre 2015)

Este documento realiza una introduccin de cmo debe ser la forma de


trabajo que deben utilizar los desarrolladores que construyan proyectos
de software para el Servicio Nacionales de Menores. Los tpicos
abordados incluyen convenciones para nombrar variables y controles,
recomendaciones generales, formas de trabajo, consideraciones de
arquitectura, modelo de respaldo de fuentes y ambientes de trabajos
utilizados.

Normas de Programacin del Servicio Nacional de Menores

Tabla de contenido
1.

Convenciones de Nombres ................................................................................................ 3


1.1

1.1.1

Terminologa y Definiciones ........................................................................................ 3

1.1.2

Convenciones de Nombres ......................................................................................... 4

1.1.3

Recomendaciones Generales ...................................................................................... 4

1.1.4

Uso de Nombres y Sintaxis .......................................................................................... 6

1.1.5

Estilo de Codificacin ................................................................................................ 10

1.1.6

Uso del Lenguaje ....................................................................................................... 13

1.1.7

Consideraciones de Arquitectura ............................................................................. 21

1.1.8

Prefijos para Controles Microsoft Visual Studio .NET ............................................... 23

1.2

2.

Ambiente Visual Studio .NET ............................................................................................... 3

Ambiente SQL Server ........................................................................................................ 27

1.2.1

Nombramiento para objetos de una base de datos ................................................. 27

1.2.2

Nombramiento para campos de una tabla ............................................................... 28

Normas de Trabajo para el rea de Desarrollo ................................................................. 29


2.1 Estructura de Trabajo ........................................................................................................... 29
2.1.1 Respaldo del Cdigo Fuente ............................................................................................ 29
2.1.2 Servidor de respaldos ...................................................................................................... 29
2.1.3 Frecuencia de los Respaldos............................................................................................ 29
2.2

Ambientes de Trabajo ....................................................................................................... 30

2.2.1 Ambiente de Desarrollo ................................................................................................... 30


2.2.2 Ambiente de Pruebas QA ................................................................................................. 30
2.2.3 Ambiente de Produccin .................................................................................................. 30

Normas de Programacin del Servicio Nacional de Menores

1. Convenciones de Nombres
1.1 Ambiente Visual Studio .NET
1.1.1

Terminologa y Definiciones
La siguiente terminologa es referenciada a travs de este documento:
Modificador de Acceso
Las palabras clave de C# o de VB.NET que declaran el nivel de accesibilidad de cdigo que
se tiene para tipos y miembros.
Ejemplo:
[VB.NET]
Private, Public, Friend, Protected, Shared
[C#]
private, public, internal, protected, static
Aunque los modificadores de acceso varan, las clases y la mayora de sus miembros usan
por defecto private o Private. Excepciones para esto son las interfaces y enumerados los
cuales por defecto son pblicos.
Camel Case
Forma de escribir una palabra donde su primera letra esta en minsculas, y la primera
letra de las subsiguientes palabras en maysculas.
Ejemplo:
nombreVendedor
Pascal Case
Forma de escribir una palabra donde la primera letra esta en mayscula, y la primera
letra de las subsiguientes palabras igualmente en mayscula.
Ejemplo:
NombreVendedor
Common Type System (CTS)
El sistema comn de tipos (CTS) del .NET Framework define como los tipos son
declarados, usados y manejados. Todos los tipos nativos de C# y de VB.NET estn
basados sobre el CTS para asegurar el soporte de la integracin de los diferentes
lenguajes del .NET Framework.
Identificador
El desarrollador define un nombre nico para declarar un objeto o instancia de alguno.

Normas de Programacin del Servicio Nacional de Menores

1.1.2

Convenciones de Nombres
Esta seccin se concentra completamente en el trabajo de nombrar proyectos,
archivos de cdigo fuente, e identificadores incluyendo campos, variables,
propiedades, mtodos, parmetros, clases, interfaces y espacios de nombres
(Namespaces).

1.1.3 Recomendaciones Generales


a) Siempre usar nombres con estilo de escritura CamelCase o PascalCase.
b) Evitar nombres totalmente en MAYSCULAS o en minsculas. Nombres de una sola
palabra sern totalmente en minsculas si se usa con el estilo de escritura camelcase.
c) Nunca usar nombres que comiencen con caracteres numricos.
d) Siempre escoja nombres especficos y con significados en s mismos.
e) Variables y propiedades deben describir la entidad que representan no el tipo o
tamao.
f)

Nunca usar notacin Hngara.


Ejemplo: strNombre o chrTipoRol

g) Evitar el uso de abreviaturas a menos que el nombre completo sea excesivo.


h) Evitar abreviaturas que su longitud sea mayor a 5 caracteres.
i)

Cualquier abreviatura debe ser totalmente conocida y aceptada por el equipo de


desarrollo.

j)

Usar maysculas en caso de abreviaciones de 2 letras, y estilo de escritura


PascalCase para abreviaturas ms largas.

k) Nunca usar palabras reservadas para nombres.


l)

Evitar conflictos de nombres con los espacios de nombres o tipos existentes en el


.NET Framework.

m) Nunca usar acento u otro caracter especial para nombres.


n) Evitar aadir redundancia en prefijos o sufijos de los identificadores.
4

Normas de Programacin del Servicio Nacional de Menores

Ejemplo:
[C#]
/// Mal!
Public enum TiposRolEnum { }
public class CPoliticasInternas{ }
public struct CoordenadaStruct { }
[VB.NET]
Mal!
Public Enum TiposRolEnum

End Enum
Public Class CPoliticasInternas

End Class
Public Structure CoordenadaStruct

End Class
o) Evitar incluir el nombre de la clase a los nombres de las propiedades.
Ejemplo: Cliente.Nombre NO Cliente.NombreCliente
p) Tratar de utilizar los siguientes prefijos en las variables y propiedades
booleanas, Puede, Es o Tiene.
q) Cuando se defina el espacio de nombres raz para un proyecto, utilice el nombre del
proyecto con estilo de escritura Pascal.
Ejemplo: SistemaOnline o SistemaFacturacion

Normas de Programacin del Servicio Nacional de Menores

1.1.4

Uso de Nombres y Sintaxis

Identificador
Archivo de proyecto
Archivo fuente

Convencin de Nombramiento
Utilizar estilo de escritura Pascal.

Utilizar estilo de escritura Pascal.


Siempre coincidir el nombre de la clase y el nombre del archivo.
Ejemplo:
[C#] MiClase.cs => public class MiClase
[VB.NET] MiClase.vb => Public Class MiClase

Archivo de recursos

Utilizar estilo de escritura Pascal.


Utilizar un nombre que describa la informacin que contenga el
archivo.

Espacio de Nombre
(Namespace)

Utilizar estilo de escritura Pascal.

Clase o Estructura

Utilizar estilo de escritura Pascal.


Usar un sustantivo o frase de sustantivos para el nombre de la
clase.
Agregar un sufijo apropiado cuando se nombre sub clases.

Ejemplo:
[C#]
private class MiClase
{}
internal class CoordenadaAttribute: Attribute
{}
public class ClienteCollection : CollectionBase
{}
public class ClienteEventArgs : EventArgs
{}
private struct PropiedadesAplicacion
{}
[VB.NET]
Private Class MiClase

End Class
Friend Class CoordenadaAttribute
Inherits Attribute

End Class
Public Class ClienteCollection
Inherits CollectionBase

Normas de Programacin del Servicio Nacional de Menores

End Class
Public Class ClienteEventArgs
Inherits EventArgs

End Class
Private Structure PropiedadesAplicacion

End Structure
Interfase

Utilizar estilo de escritura Pascal.


Siempre agregar el prefijo "I.
Ejemplo:
[C#]
Interface ICliente
{}
[VB.NET]
Interface ICliente

End Interface

Mtodo

Utilizar estilo de escritura Pascal.


Tratar de usar un verbo o el par verbo-objeto.
Ejemplo:
[C#]
public void Ejecutar() { }
private string ObtenerVersionEnsamblado(Assembly
libreria) { }
[VB.NET]
Public Sub Ejecutar()

End Sub
Private Function ObtenerVersionEnsamblado(ByVal
libreria As Assembly) As String

End Function

Propiedad
(Encapsulamiento)

Utilizar estilo de escritura Pascal.


El nombre de la propiedad debe representar la entidad que
devuelve.
Para las propiedades que reflejen llaves primarias o forneas se
debe utilizar el subfijo ID.
Ejemplo: ComunaID, RegionID, etc.

Nunca utilizar los prefijos Get o Set.

Normas de Programacin del Servicio Nacional de Menores

Ejemplo:
[C#]
public string Nombre
{
get{}
set{}
}
[VB.NET]
Public Property Nombre() As String
Get
Return _nombre
End Get
Set(ByVal Value As String)
_nombre = Value
End Set
End Property
Campo (Pblico,
Protegido o
Interno)

Utilizar estilo de escritura Pascal.


Evitar el uso de campos no privados.
Usar propiedades en lugar de estos campos.
Ejemplo:
[C#]
public string Nombre;
protected IList ListaInterna;
[VB.NET]
Public Nombre As String
Protected ListaInterna As IList
[C#] Utilizar estilo de escritura tipo Camel.
[VB.NET] Utilizar estilo de escritura tipo Camel y utilizar el
prefijo "_".

Campo (Privado)

Ejemplo:
[C#]
private string nombre;
[VB.NET]
Private _nombre As String
Constante o
Campo Esttico
Enumerador

Tratar como campo.

Utilizar estilo de escritura Pascal.


Ejemplo:
[C#]
public enum TiposCliente
{

Normas de Programacin del Servicio Nacional de Menores

Normal,
Frecuente
}
[VB.NET]
Public Enum TiposCliente
Normal
Frecuente
End Enum
Delegado o Evento

Tratar como campo.

Ejemplo:
[C#]
public event EventHandler CargarComponente;
[VB.NET]
Public Event CargarComponente As EventHandler
Variable (Interna)

Parmetro

Utilizar estilo Camel.


Evitar el uso de nombres de un solo carcter tales como "x" o
"y" a excepcin de aquellos usados en la sentencia for.
Evitar enumerar nombre de variables como cadena1, cadena2,
cadena3, etc.
Utilizar estilo de escritura Camel.
Ejemplo:
[C#]
public void Ejecutar(string texto, int
numeroIteraciones)
{}
[VB.NET]
Public Sub Ejecutar(ByVal texto As String, ByVal
numeroIteraciones As Integer)

End Sub

Normas de Programacin del Servicio Nacional de Menores

1.1.5

Estilo de Codificacin
Las siguientes secciones describen el camino preferido para implementar cdigo
fuente en C# y VB.NET, para as crear un cdigo legible, claro y consistente que sea
fcil de comprender y mantener.

1.1.5.1 Formato
a) Nunca declarar ms de un espacio de nombres por archivo.
b) [C#] Siempre colocar llaves ({ y}) en lneas separadas.
c) [C#] Siempre usar llaves ({ y }) en sentencias condicionales.
d) Siempre usar Tab e indentacin de tamao 4.
e) Declarar cada variable independientemente, nunca en la misma sentencia.
f) Colocar la sentencia using o Imports en la parte superior del archivo. El grupo de
los espacios de nombres de .NET colocarle por encima de los espacios de nombres
particulares y todos en ordenados alfabticamente:
Ejemplo:
[C#]
using System;
using System.Collections
using System.Data;
using System.Data.SqlClient;
using System.Xml;
[VB.NET]
Imports System
Imports System.Collections
Imports System.Data
Imports System.Data.SqlClient
Imports System.Xm

10

Normas de Programacin del Servicio Nacional de Menores

g) Agrupar la implementacin interna de las clases por el tipo de miembro en el


siguiente orden:
1.
2.
3.
4.
5.

Campos
Propiedades
Constructores y Destructores
Metodos
Enumeradores, Estructuras o Clases internas

h) Ordenar las declaraciones a partir de los modificadores de acceso y visibilidad:


1.
2.
3.
4.

Privados
Internos
Protegidos
Pblico

i) Utilizar #region o #Region " para agrupar los tipos de miembros de la clase.
j) Recursivamente indentar todos los bloques de cdigo en medio de llaves.
k) [C#] Evitar declarar mltiples atributos en una misma lnea. En lugar de ello colocar
cada atributo en una sentencia separada.
Ejemplo:
[C#]
// Mal!
[Atributo1, Atributo2, Atributo3]
public class MiClase
{}
// Bien!
[Atributo1][Atributo2][Atributo3]
public class MiClase
{}

11

Normas de Programacin del Servicio Nacional de Menores

1.1.5.2 Comentarios
a) [C#] Usar // o /// pero no /* */
b) [C#] No utilizar marcos de asteriscos.
Ejemplo:
//******************************************
// Cuadro de comentarios
//******************************************
c) Tratar de usar comentarios en el interior de los mtodos para explicar aspectos
globales del algoritmo.
d) No utilizar comentarios para explicar cdigo obvio.
e) Incluir lista de tareas para utilizar los filtros de comentarios.
Ejemplo:
[C#]
// TODO: Obtener cadena de conexin del registro
[VB.NET]
' TODO: Obtener cadena de conexin del registro
[C#] SIEMPRE aplicar bloques de comentarios XML propios de C# (///) a las
declaraciones de los miembros pblicos, protegidos e internos. No olvidar que cuando
se presiona tres veces slash (/), el editor generar los bloques de comentarios
respectivos.
g) [C#] Siempre agregar el elemento CD AT A a los comentarios que contengan cdigo
para evitar problemas de codificacin.
f)

Ejemplo:
[C#]
///<example>
/// Agregar la siguiente llave a los valores de la
/// aplicacin en el web.config
///<code><![CDATA[
///
<configuration>
///
<appSettings>
///
<add key=miLLave value=miValor/>
///
</appSettings>
///
</configuration>
///]]></code>
///</example>

12

Normas de Programacin del Servicio Nacional de Menores

1.1.6

Uso del Lenguaje

1.1.6.1 General
a) [C#] Nunca omitir los modificadores de acceso. Declare explcitamente todos los
identificadores con su apropiado modificador de acceso en lugar de dejarlo con el de
por defecto.
Ejemplo:
[C#]
// Mal!
void EscribirEvento(string mensaje)
{}
// Bien!
private void EscribirEvento(string mensaje)
{}
b) [VB.NET] Nunca utilizar la declaracin explcita de variables con valor Off. Siempre
declararla como On.
Ejemplo:
[VB.NET]
'Mal!
Option Explicit Off
'Bien!
Option Explicit On
c) [VB.NET] Tratar de utilizar la declaracin implcita de conversin con valor On (el
valor Off es por defecto).
Ejemplo:
[VB.NET]
Option Strict On

13

Normas de Programacin del Servicio Nacional de Menores

1.1.6.2 Variables y Tipos


a) Tratar de inicializar las variables cuando las declare.
b) Siempre utilizar los tipos de dato de C# y VB.NET en lugar de los tipos del CTS de .NET.
Ejemplo:
[C#]
Short NO System.Int16
int NO System. Int32
long NO System.Int64
string NO System. String
[VB.NET]
Short NO System.Int16
Integer NO System.Int32
Long NO System.Int64
String NO System.Stri ng
c) Slo declarar a los campos como privados. Usar propiedades para acceder a los
campos privados utilizando los modificadores de acceso de tipo pblico, protegido o
interno.
d) Evitar declarar variables de cadena con valores literales. En lugar use constantes,
recursos, registros de sistema u otro tipo de repositorio de datos.
e) Slo declarar constantes para tipos de datos simples.
f) [C#] Declarar variables readonly o static readonly en lugar de constantes de tipos
complejos.
g) [C#] Evitar utilizar conversiones directas (cast). En su lugar, utilizar el operador as y
verificar por nulos (null).
Ejemplo:
[C#]
//Mal!
object data = CargarData();
//Bien
DataSet ds = new DataSet;
ds = CargarData();
if (ds != null)
{}
h) No comparar cadenas a String.Empty o para verificar cadenas vacas. En su lugar,
comparar por su longitud (String.Length) a cero.
i) Evitar la creacin de cadenas ocultas en un bucle. Usar String.Compare() en su lugar.
Ejemplo:
14

Normas de Programacin del Servicio Nacional de Menores

[C#]
// Mal!
int id = -1;
string nombre = Juan Perez;
for(int i=0; i<listaClientes.Count; i++)
{
if (listaCliente[i].Nombre.ToLower() == nombre)
{
id = listaCliente[i].Id
}
}
// Bien!
int id = -1;
string nombre = Juan Perez;
for(int i = 0; i<listaClientes.Count; i++)
{
//El argumento ignoreCase igual a true realiza una comparacin sin
//importarle la capitalizacin de las cadenas y sin alojar una nueva
//cadena en memoria.
if(String.Compare(listaCliente[i].Nombre,nombre,true) == 0)
{
id = listaCliente[i].Id;
}
}
[VB.NET]
' Mal!
Dim id As Integer = -1
Dim nombre As String = "Juan Perez"
For i As Integer=0 To listaClientes.Count
If listaClientes(i).Nombre.ToLower() = nombre Then
id = listaClientes(i).Id
End If
Next
' Bien!
Dim id As Integer = -1
Dim nombre As String = "Juan Perez"
For i As Integer=0 To listaClientes.Count
'El argumento ignoreCase igual a True realiza una comparacin sin
'importarle la capitalizacin de las cadenas y sin alojar una nueva cadena
'en memoria.
If String.Compare(listaClientes(i).Nombre, nombre,True)=0 Then
id = listaClientes(i).Id
End If
Next
15

Normas de Programacin del Servicio Nacional de Menores

1.1.6.3 Control de Flujos


a) Evitar la creacin de mtodos recursivos. Utilizar bucle en su lugar.
b) Utilizar el operador condicional ternario slo para condiciones triviales. Evitar
operaciones complejas con este operador.
Ejemplo:
[C#]
int resultado = esValido ?9 :4;
[VB.NET]
Dim resultado As Integer = IIf(esValido, 9, 4)
c) Evitar evaluar condiciones booleanas contra true o false.
Ejemplo:
[C#]
// Mal!
if (esValido == true)
{}
// Bien!
if (esValido)
{}
[VB.NET]
' Mal!
If esValido = True Then

End If
' Bien!
If esValido Then

End If
d) [C#] Evitar asignacin de variables en expresiones condicionales.
Ejemplo:
[C#]
if ((i=2)==2)
{}

16

Normas de Programacin del Servicio Nacional de Menores

e) Evitar expresiones condicionales complejas, usar variables booleanas para separar la


expresin en expresiones manejables.
Ejemplo:
[C#]
// Mal!
if ((valor > this._highScore) && (valor != this._highScore)) && (valor <
this._maxScore))
{}
// Bien!
esHighScore= (valor >= this._highScore);
esEmpate= (valor == this._highScore);
esValido= (valor < this._maxScore);
if ((esHighScore && !esEmpate) && esValido)
{}
[VB.NET]
' Mal!
If ((valor > Me.highScore) & (valor <> Me.highScore))
& (valor <Me.maxScore) Then

End If
' Bien!
Dim esHighScore As Boolean = (valor >= Me.highScore)
Dim esEmpate As Boolean = (valor = Me.highScore)
Dim esValido As Boolean = (valor < Me.maxScore)
If(esHighScore And Not esEmpate) And esValido Then

End If
f)

[C#] Slo usar expresiones switch/case para operaciones simples con condicionales
lgicas.
g) [C#] Preferir if/else anidadas sobre switch/case para secuencias condicionales cortas y
condiciones complejas.

17

Normas de Programacin del Servicio Nacional de Menores

1.1.6.4 Control de Excepciones


a) No usar los bloques try/catch para control de flujos.
b) Slo capturar las excepciones cuando van a ser controladas.
c) Nunca declarar un bloque catch vaco.
d) Evitar anidar bloques try/catch en otro bloque catch.
e) Usar filtros de excepciones especficas.
f) Ordenar los filtros de excepciones de ms especfica a ms genrica.
g) Slo usar el bloque finally para liberar recursos utilizados en el bloque try
h) Siempre utilizar validaciones para evitar excepciones.
i) Evitar definir excepciones personalizadas. Usar las clases de excepciones existentes.
j) Cuando una excepcin personalizada es necesaria;
a. Siempre derivar de Exception no de ApplicationException
b. Siempre sobrescribir el mtodo ToStr ing ().
c. Siempre sobrescribir el operador implcito string cuando se sobrescriba el mtodo
ToString ().
d. Siempre implementar los siguientes patrones de constructores
[C#]
public MiExcepcion();
public MiExcepcion(string mensaje);
public MiExcepcion(string mensaje, Exception innerException);
k) Cuando se lance una nueva excepcin, siempre pasar la innerException para poder
mantener la pila de excepciones.

18

Normas de Programacin del Servicio Nacional de Menores

1.1.6.5 Eventos, Delegados e Hitos


a) Siempre chequear que las instancias de los eventos y delegados sean diferentes de
nulo.
b) Usar por defecto las clases EventHandleryEventArgs para los eventos ms simples.
c) [C#] Siempre usar la palabra clave lock en lugar del tipo Monitor.
d) Slo bloquear objetos privados o estticos privados.
e) [C#] Evitar bloquear los tipos de objetos.
Ejemplo:
lock(typeof(MiClase));
f)

[C#] Evitar bloquear la instancia actual de un objeto.


Ejemplo:
lock(this);

1.1.6.6 Composicin de Objetos


a) Siempre declarar los tipos explcitamente con un espacio de nombres. Nunca usar el
espacio de nombres por defecto {global}.
b) Evitar declarar mtodos con ms de 7 parmetros. Si fuera necesario considerar para
una estructura o clase.
c) [C#] No usar la palabra reservada new para ocultar miembros de tipos derivados.
d) Slo usar la palabra reservada base o MyBase cuando se invoque en el
constructor o implementacin de una sobre escritura de algn mtodo.
e) [C#] No usar el modificador de acceso protected con sealed en las clases.
f) [VB.NET] No usar el modificador de acceso Protected con NotInheritable.
g) [C#] Considerar usar sobrecarga en lugar de params como parmetro.
h) [C#] Siempre validar una variable de tipo enumerador antes de utilizarla dentro de un
mtodo. Esta variable puede contener cualquier valor que el tipo Enum puede
soportar (por defecto es int)
Ejemplo:
[C#]
public void Test(CategoriaLibros cat)
{
if (Enum.IsDefined(typeof(CategoriaLibros),cat))
{}
}
i)

Siempre llamar al mtodo Close() o Dispose() en las clases que lo implementen.

19

Normas de Programacin del Servicio Nacional de Menores

j)

[C#] Utilizar la palabra reservada using para asegurar la llamada al mtodo


Dispose().
k) [C#] Siempre implementar la interfase IDisposable y su respectivo patrn en las clases
que referencien a recursos externos.
Ejemplo:
[C#]
using (SqlConnection cn = new SqlConnection(this._connectionString))
{}

20

Normas de Programacin del Servicio Nacional de Menores

1.1.7

Consideraciones de Arquitectura
En el desarrollo de aplicaciones empresariales escalables y seguras se encuentran
ciertas prcticas conocidas como mejores prcticas. En sta seccin se dan pautas
generales y lineamientos para lograr este tipo de aplicaciones.
Para el caso de aplicaciones empresariales Windows o Web, se debe seguir el
siguiente esquema:

Segn la figura, podemos concretar dichas capas de la siguiente manera:

Una librera de clases con la capa de acceso a datos y libreras utilitarias. (DAL
data access layer).
Una librera de clases con la capa de lgica del negocio. (BLL business logic layer)
Un proyecto Web o proyecto Windows, dependiendo del tipo de interfaz que se
utilizar en la aplicacin (UI). Este proyecto abarca toda la capa de interfaz de
usuario y presentacin.
21

Normas de Programacin del Servicio Nacional de Menores

1.1.7.1 Capa de acceso a datos (DAL)


En esta capa deben programarse las clases entidades y controladoras lo
suficientemente inteligentes como para manejar el aspecto CRUD (Create, Restore,
Update, Delete) de las tablas de la base de datos de la aplicacin. Adicionalmente,
pueden existir clases utilitarias que permitan la interaccin con la base de datos.
1.1.7.2 Capa de lgica del negocio (BLL)
En esta capa deben crearse clases que interactan con las clases de la DAL para
realizar procesos propios del negocio en base a una lgica determinada.
1.1.7.3 Capa de presentacin
En esta capa debe programarse la interfaz de usuario de la aplicacin, especficamente
puede ser un proyecto Windows, Web o consola. Aqu se deben realizar las llamadas a
la capa de BLL con la informacin que se captura desde la interfaz. Adicionalmente en
esta capa deben realizarse las validaciones de los datos ingresados antes de pasar a
otras capas.

22

Normas de Programacin del Servicio Nacional de Menores

1.1.8

Prefijos para Controles Microsoft Visual Studio .NET


Los prefijos que se mostrarn a continuacin se debern anteponer al nombre que se
le d a un control en particular para los proyectos Microsoft Visual Studio 2008/2010.
Estos estn agrupados segn el tipo de control que representan:

1.1.8.1 Controles Standard


Control
Label
Text box
Button
LinkButton
ImageButton
HyperLink
DropDownList
ListBox
CheckBox
CheckBoxList
RadioButton
RadioButtonList
Image
ImageMap
Table
BulletedList
HiddenField
Literal
Calendar
AdRotator
FileUpload
Wizard
Xml
MultiView
Panel
PlaceHolder
View
Subtitution
Localize

Prefijo
lbl
txt
btn
lbt
ibt
lnk
ddl
lst
chk
chkl
rbt
rbtl
img
imgm
tbl
bul
hdf
lit
cld
adr
fup
wiz
xml
mtv
pnl
plh
viw
sbt
loc

Ejemplos:
btnGuardar, txtNombre
Nota:
Se debe utilizar el tipo de escritura Pascal para nombrar los controles.
23

Normas de Programacin del Servicio Nacional de Menores

1.1.8.2 Controles Data


Control
GridView
DataList
DetailsView
FormView
Repeater
SqlDataSource
ObjectDataSource
XmlDataSource
SiteMapDataSource
EntityDataSource
DynamicDataManager
DynamicControl
ListView
DataPager
LinqDataSource

Prefijo
gv
dal
dtv
frmv
rep
sds
ods
xds
smds
eds
ddm
dmc
liv
dpg
lds

1.1.8.3 Controles Validation


Control
RequiredFieldValidator
RangeValidator
RegularExpressionValitor
CompareValidator
ValidationSummary
DynamicValidator

Prefijo
rfv
rv
rev
cv
vs
dv

1.1.8.4 Controles Navigator


Control
SiteMapPath
Menu
TreeView

Prefijo
smp
mnu
trv

24

Normas de Programacin del Servicio Nacional de Menores

1.1.8.5 Controles Login


Control
Login
LoginView
PasswordRecovery
LoginStatus
LoginName
CreateUserWizard
ChangePassword

Prefijo
lg
lgv
pwr
lgs
lgn
cuw
cpw

1.1.8.6 Controles WebParts


Control
WebPartManager
ProxyWebPartManager
WebPartZone
CatalogZone
DeclarativeCatalogPart
PageCatalogPart
ImportCatalogPart
EditorZone
AppearanceEditorPart
BehaviorEditorPart
LayoutEditorPart
PropertyGridEditorPart
ConnectionZone

Prefijo
wpm
pwpm
wpz
caz
dcp
pcp
icp
edz
aep
bep
lep
pgep
cnz

1.1.8.7 Controles Ajax


Control
ScriptManager
ScriptManagerProxy
Timer
UpdatePanel
UpdateProgress

Prefijo
sm
smp
tmr
upn
upr

Recomendacin:
No usar el control UpdatePanel, ya que slo emula el comportamiento Ajax, usar alternativamente
Javascript y WebMethods .

25

Normas de Programacin del Servicio Nacional de Menores

1.1.8.8 Controles Reporting


Control
MicrosoftReportViewer
CrystalReportViewer
CrystalReportPartsViewer
CrystalReportSource

Prefijo
mrv
crv
crpv
crs

1.1.8.9 Controles Ajax Control Toolkit


Control
AsyncFileUpload
CalendarExtender
ConfirmButtonExtender
FilteredTextBox
MaskedEditExtender
MaskedEditValidator
ModalPopupExtender
NumericUpDownExtender
TabContainer
TextBoxWatermarkExtender
TimeSelector

Prefijo
afu
clde
cbe
fte
mke
mkv
mpe
nude
tcn
twm
tms

26

Normas de Programacin del Servicio Nacional de Menores

1.2 Ambiente SQL Server


1.2.1 Nombramiento para objetos de una base de datos
a) Para nombrar cualquier objeto de la base de dato, se debe utilizar estilo de escritura
Pascal.
Ejemplo:
SeguimientoCausaAdopcion
Caso
ObtenerEstadoCaso

(Base de datos)
(Tabla)
(Procedimiento almacenado)

Importante: Encarecidamente se deben evitar las abreviaturas para el nombramiento de


cualquier objeto de la base de datos

b) Intentar utilizar siempre nombre singulares para nombrar los objetos.


Ejemplo:
Cliente NO Clientes

27

Normas de Programacin del Servicio Nacional de Menores

1.2.2 Nombramiento para campos de una tabla


a) Para nombrar llaves primarias y forneas de una tabla, utilizar la siguiente estructura:
Nombre del campo + ID
Ejemplo: CodigoID
Importante: Encarecidamente se deben evitar las abreviaturas para el nombramiento de
los campos de las tablas.
b) Intentar utilizar siempre nombres singulares para nombrar los campos de una tabla.
Ejemplo:
FechaIngreso NO FechasIngresos

28

Normas de Programacin del Servicio Nacional de Menores

2. Normas de Trabajo para el rea de Desarrollo


2.1 Estructura de Trabajo
2.1.1 Respaldo del Cdigo Fuente
Para todos los proyectos que se desarrollen, los cdigos fuentes quedarn alojados en
dos lugares. Estos son: en cada mquina de desarrollo y en el servidor designado de
respaldo, segn lo indicado en los siguientes puntos.
2.1.2 Servidor de respaldos
Los proyectos desarrollados en Visual Studio 2010 o posterior, se debern respaldar en el
servidor de Team Foundation Server dispuesto para aquello.
2.1.3 Frecuencia de los Respaldos
Diarias, utilizando la herramienta Microsoft Team Foundation Server.

29

Normas de Programacin del Servicio Nacional de Menores

2.2 Ambientes de Trabajo


2.2.1 Ambiente de Desarrollo
a) Servidor Web: Mquina local del desarrollador.
b) Servidor de Base de Datos: Servidor de desarrollo.
2.2.2 Ambiente de Pruebas QA
a) Servidor Web: Servidor de pruebas.
b) Servidor de Base de Datos: Servidor de pruebas.
2.2.3 Ambiente de Produccin
a) Servidor Web: Servidor de produccin.
b) Servidor de Base de datos: Servidor de produccin.

30