Skip to content

saraiche/UnoGame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Estándar de desarrollo

Introducción

Este proyecto se desarrollará en C# Netframework. Para la comunicación en red se utilizará Windows Communication Foundation (WCF) y para la capa de presentación se utilizará Windows Presentation Foundation (WPF).

Propósito

El presente documento sirve como guía para los códigos fuentes del videojuego a realizar para la asignatura de Tecnologías para la construcción de software de la Facultad de Estadística e Informática. Tiene como propósito que la comunicación del equipo por medio del código sea efectiva. Busca unificar el código a escribir, así como dar una guía de la forma en que serán representados los distintos componentes del código.

Nombrado

Reglas generales

Todo el código fuente será escrito en el idioma inglés, incluyendo el nombre de métodos, atributos, propiedades. Se usan nombres descriptivos y tienen relación con la función que desempeñan (preferencia a nombres largos y descriptivos que cortos y poco entendibles).

Bien

public bool ValidateEmail(string EmailToValidate);

Mal

public bool validateE(string e);

Variables

  • Se usa lowerCammelCase
  • Se usan frases nominales o palabras completas para describir explícitamente los datos que almacenarán
  • Acrónimos son usados como palabras para el UpperCamelCase (ej: direccionUrl no direccionURL)
  • Todas las variables son inicializadas en sus puntos de declaración
  • Se hace una declaración de variable por línea

Bien

string name = "";
string username = "";

Mal

string Name;
string u;
string Name, u;

Propiedades

Si las propiedades tienen modificadores de acceso públicos, serán escritos en notación UpperCammelCase.

Bien

public string FirstName{ get; set; }

Mal

public string getFisrtName()
{
    return this.firstName;
}

Metodos

  • Todos los metodos se escriben en UpperCammelCase
  • Se sigue el esquema de nombrado: tipoDeDatoDeRetorno NombreDelMetodo(Parametros);

Bien

public async SendMessage(string User, string Message)
{
    await Clients.All.SendAsync("ReceiveMessage", User, Message);
}

Mal

public async sendMessage(string user, string message)
{
    await Clients.All.SendAsync("ReceiveMessage", user, message);
}

Nombrado de acciones

acción clic Es el nombre del controlador seguido de _Click

Bien

private void BtnSignUp_Click(object sender, RoutedEventArgs e)
{
}

Mal

private void clickBtnSignUp(object sender, RoutedEventArgs e)
{
}

Nombrado de nombre de etiquetas (Prefijos)

labels Para el nombrado de los componentes de interfaz gráfica se utiliza como prefijo la(s) inicial(es) del componente en mayúscula (en caso de ser tener un nombre de dos o más palabras) y las consonantes de la palabra (si es un nombre de solo una palabra) seguido del nombre de la variable con la inicial mayúscula (estilo upper camel case)

Bien

<Label x:Name="LblUno"/>

Mal

<Label x:Name="TlUno"/>

buttons

Bien

<button x:Name="BtnUno/>

Mal

<button x:Name="botonUno"/>
<button x:Name="bUno"/>

TextBox

Bien

<TextBox x:Name="TbUno"/>

Mal

<TextBox x:Name="textBoxUno"/>

passwordBox

Bien

<PasswordBox  x:Name="PbUno"/>

Mal

<PasswordBox  x:Name="passwordtextBoxUno"/>

Constantes

  • Se usa la notación UPPER_SNAKE_CASE (todas las leras mayúsculas, cada palabra se separa de la siguiente por medio de un guión bajo)

Bien

const string PLAYER_USERNAME = "Saraiche";

Mal

const string playerUsername = "Saraiche";

Clases

  • Se usa la notación UpperCammelCase

Bien

public class Security 
{
    
}

Mal

public class security {
}

Instancias de clases

  • Se usa la notación lowerCammelCase

Bien

ServiceHost host = new ServiceHost(typeof(Services.DataService))
Images images = new Images { Id = 1 };

Mal

ServiceHost Host = new ServiceHost(typeof(Services.DataService))
Images Images = new Images { Id = 1 };

Interfaces

Las interfaces tienen el prefijo "I"

Bien

public interface IUserManagment 
{
}

Mal

public interface userManagment {
}

Data transfer objects

Los data transfer objects comienzan con el prefijo DTO en mayúsculas, seguido al objeto que corresponde en notación UpperCammelCase.

Bien

public class DTOPlayer 
{
}

Mal

public class dtoPlayer 
{
}

Estilo

Identación

  • Todo el código desarrollado tendrá identación de un tab.

Bien

public class Main{
	public static void main(String[] args){
		Console.Writeline(Hola Mundo);
	}
}

Mal

public class Main{
  public static void main(String[] args){
  Console.WriteLine(Hola Mundo);
  }
}

Llaves

Cuando abrimos llaves en un metodo las llaves irán seguidos de un salto de linea en el metodo

Bien

public CustomerDto ToDto()
{
    return new CustomerDto()
    {
        Address = Address,
        Email = Email,
        FirstName = FirstName,
        LastName = LastName,
        Phone = Phone,
        Id = Id ?? throw new Exception("el id no puede ser null")
    };
}

Mal

public CustomerDto ToDto() {
    return new CustomerDto() {
        Address = Address,
        Email = Email,
        FirstName = FirstName,
        LastName = LastName,
        Phone = Phone,
        Id = Id ?? throw new Exception("el id no puede ser null")
    };
}

Espaciados

Tiene que existir un espacio entre cada igual o entre variables o números y símbolos aritméticos o lógicos.

Bien

flag = true;
double counter = 0;
counter = counter + 1;

Mal

flag=true;
counter=counter+1;

Comentarios

Formato

Se utilizan '///' para comentarios y documentación. Si son dos o más líneas, de igual manera comienza con '///'

Bien

/// this line explains something

///these lines explains
///something more

Mal

//this not explain something

Internacionalizacion

El xmnls debera de hacer referencia a la palabra p de propiertes

Xmnls

bien

xmlns:p="clr-namespace:unoProyect.Properties"

Mal

xmlns:internacionalizacion="clr-namespace:unoProyect.Properties"

Labels content

bien

<Label x:Name = "lblName" Content = "{x:Static p:Resources.Name}"/>

mal

<Label x:Name = "lblName" Content = "Nombre"/>

Metodos de localizacion

Los metodos deben de ser tipo publico y no internal

bien

        public static string chat {
            get {
                return ResourceManager.GetString("chat", resourceCulture);
            }
        }

Mal

        internal static string chat {
            get {
                return ResourceManager.GetString("chat", resourceCulture);
            }
        }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published