Para que escribas codigo que tu mismo entiendas
los Nombres deben ser
-largos y obvios es decir auto descriptivos simples y revelar su intencion estar en el idioma del que habla
-deben ser obvio de que clase representan
evitar
abreviatura,tecnicismo,No neologismo,No arcaismos,No Jergas,No siglas,No supresión de letras
-no uses prefijos ni sufijos
malos nombres
int x=3;//no revela su intencioa
int y=14;
fecNac
=new Date();//suprime letras Per p=new Per();//solo es una letra
String PerName
="juan";//usa abreviatura double weight=14.5;//esta en ingles pero yo escribo para gente que habla español
String jato
="av victoria 511";//jato es jerga String aka
="corasonsito511";//aka es abreviatura y neologismo String suMerced
="juan";//arcaismo String SEP
="Secretaría de Educación Pública";//solo lo entienden los mejicanos y es abreviatura Date dfechaDeNacimiento
=new Date;//eso es para dejar bien en claro que la fecha de nacimiento es de tipo fecha estoy siguiendo unos estandares estupidos que me fuersan a usar sufijos cuando un buen nombre basta
buenos nombres
int cantidadDePersonas=3;//me importa un comino de que el nombre sea largo
Date fechaDeNacimiento
=new Date();//el nombre revela cual es su intención no necesito poner una de adelanta para decir que es de tipo fecha Persona persona=new Persona();//eligo el nombre largo y descriptivo no uso abreviaturas es obvio que la variable persona es de tipo persona
Double peso
=new Double(); //es obvio que peso es decimal nadie pensario que peso es de tipo Cadena o de tipo Date
En caso de que exista un nombre corto que sea sinonimo y que sea mas corto y que no cambie en nada el sentido que quieres expesar úsalo pero siempre prefiere los nombres largo si es mas legible
Los métodos
-esto es muy controversial deben ser extremadamente cortos
-los métodos que llaman otros metodos deben estar en la parte superior
-los metodos mas especificos deben estar en la parte inferior
-si un metodo llama a otro el metodo que es llamado debe estar en la parte inferior del que lo llama
-si sigues los consejos anteriores debes poder leer de arriba abajo en la parte superior los métodos mas globales y en la parte inferior los métodos mas específicos.No necesitaras leer los métodos que están mas abajo por que tienes la opción de considerarlo demasiado detalle
un ejemplo de clase con malos nombres y con métodos desordenados
package com.ejemplo;
public class MalEcho {
public static void main
(String arg
[]) {
double[] x = new double[50];
int[] y= new int[50];
sum(x, y);
double z=0;
z = tot(z, x, y);
}
private static double tot(double z, double[] x, int[] y) {
for(int c=0;c<=3;c++){
z=z+x[c]*y[c];
}
return z;
}
private static void sum(double[] x, int[] y) {
x[0]=20;
x[1]=50;
x[2]=30;
y[0]=1;
y[1]=1;
y[2]=1;
}
}
y aca la version con mejores nombres tambien date cuenta que pongo los metodos en orden como dentro del main primero lleno las variables entonces escribo despues del main el metodo llenarVariables
package com.ejemplo;
public class Regular {
public static void main
(String arg
[]) {
double[] precios = new double[50];
int[] cantidades = new int[50];
llenarVariables(precios, cantidades);
double respuesta = 0;
respuesta = obtenerTotal(respuesta, precios, cantidades);
}
private static void llenarVariables(double[] presios, int[] cantidades) {
presios[0] = 20;
presios[1] = 50;
presios[2] = 30;
cantidades[0] = 1;
cantidades[1] = 1;
cantidades[2] = 1;
}
private static double obtenerTotal(double respuesta, double[] precios, int[] cantidades) {
for (int indice = 0; indice <= 3; indice++) {
respuesta = respuesta + precios[indice] * cantidades[indice];
}
return respuesta;
}
}
cantidades[0]=1;
cantidades[1]=1;
cantidades[2]=1;
}
}
Comentarios
-no pongas comentarios obvios borra todos los comentarios generados por el ide
//creo esta clase para mostrar un ejemplo
//esta clase tiene muchos comentarios
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
//esto es un paquete
package com.ejemplo;
/**
*
* @author luis
*/
//esto es una clase publica
public class NewClass {
//esto es una variable global
int a;
//esta variable es privada
//esto es un construcor
public NewClass() {
}
}
-jamas tengas código comentado esta practica es de las peores el código comentado es inútil.
Algunos dirán que pueden necesitar el código eso es falso si realmente lo necesitas en primer lugar para que lo tienes comentado
Otros dirán que lo van a necesitar luego eso es falso por que si lo necesita deben estar en su propia clase separada o dentro de un método
Otros dirán que tiene miedo a borrar el código eso es falso por que lo puedes tener en el control de versiones te juro que no se va a perder
Otros dirán que es para reutilizar código en ese caso dejo de escucharlo si no consigo que lo despidan yo renuncio
-no comentes codigo es una horrible practica en ves de poner comentarios reescribe el código hasta que no necesites comentarios usando métodos cortos privados y buenos nombres
la misma clase sin seguir estas normas
package com.ejemplo;
public class Regular {
//este es el main
public static void m
(String arg
[]) { //este es el precio
double[] p = new double[50];
//esta el la cantidad
int[] c = new int[50];
//a qui lleno las variables
p[0] = 20;
p[1] = 50;
p[2] = 30;
c[0] = 1;
c[1] = 1;
c[2] = 1;
double respuesta = 0;
//a qui obtengo el total
for (int indice = 0; indice <= 3; indice++) {
respuesta = respuesta + p[indice] * c[indice];
}
respuesta = respuesta;
}
}
convenciones
esto es simple NO CREES TU PROPIA CONVENCION la única convension es la sun coding convension no existe otra convencion valida
Usa orientacion a objetos
clase =sustantivo singular
Interfase=sustantivo singular o adjetivo
metodos = verbos
las variables gloabales son sustantivos
extends o implements =representacion la relasion de es un ,es un subtipo
una clase persona
package com.ejemplo;
import java.util.Date;
public class Persona {
private double salario;
private Date fechaDeNacimiento
;
public Persona
(String nombre,
double salario,
Date fechaDeNacimiento,
String direcion
) { this.nombre = nombre;
this.salario = salario;
this.fechaDeNacimiento = fechaDeNacimiento;
this.direcion = direcion;
}
public Persona() {
}
return direcion;
}
public void setDirecion
(String direcion
) { this.direcion = direcion;
}
public Date getFechaDeNacimiento
() { return fechaDeNacimiento;
}
public void setFechaDeNacimiento
(Date fechaDeNacimiento
) { this.fechaDeNacimiento = fechaDeNacimiento;
}
return nombre;
}
public void setNombre
(String nombre
) { this.nombre = nombre;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
herencia y implementacion
package com.ejemplo;
public class Factura extends Documento implements Imprimible {
@Override
public void imprimir() {
}
}
public class Main {
public static void main
(String arg
[]) { Documento documento = new Factura();
}
}
Tu codigo debe ser pronusiable debe leerse como español eso se logra siguendo todas las reglas ejemplo
public void presionoBotonGuardar(){
Orden orden =leerDesdeElFormulario();
BaseDeDatos baseDeDatos =new BaseDeDatos();
if(orden.puedeGurdarseEnBaseDeDatos()){
baseDeDatos.guardar(orden);
}
else{
JOptionPane.
showMessageDialog(null,
"no se puede guardar la orden "); }
}
sigue todas las reglas hasta que:
tu código pueda leerse de arriba abajo sin tener que saltar la vista a la parte superior de la clase para eso ponemos los métodos mas generales arriba y si ese método llama a otro método pues ponlo inmediatamente abajo cosa que se lea de corrido sin saltar a la parte superior.
Tus ojos no deben saltar a la parte superior para ver el tipo de datos por que el nombre deja obvio que tipo de dato es
tu no debes buscar comentarios por que el nombre de los métodos dicen todo lo que necesitas saber
en caso de querer comentar un pedazo de código pues en ves de comentarlo ponlo dentro de un método privado con un buen nombre