elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Pregunta Personal Programador JAVA!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pregunta Personal Programador JAVA!  (Leído 3,400 veces)
ChavalChavito

Desconectado Desconectado

Mensajes: 43


Y ahora que pasa...


Ver Perfil
Pregunta Personal Programador JAVA!
« en: 2 Agosto 2012, 01:50 am »

Primero que todo muchas gracias x leer el post.
Eventualmente me siento muy disconforme con mi conocimiento como programador, a pesar q yo siempre intento superarme. Me pasa muy seguido que me nombran tecnologias y terminos q no comprendo, leo muchos codigos que no entiendo, o peoor inclusive leo codigo q hice yo mismo y paso considerable tiempo para volver a comprenderlo.
Nose si esto es gral y compartido x todos los programadores o solo es un rasgo mio...
Perdon x el tema del post se q no tiene nada q ver !


« Última modificación: 2 Agosto 2012, 05:27 am por ChavalChavito » En línea

[Case]


Desconectado Desconectado

Mensajes: 474



Ver Perfil WWW
Re: Pregunta Personal Programador JAVA!
« Respuesta #1 en: 4 Agosto 2012, 04:26 am »

Eso es muy normal, por eso siempre hay que documentar bien tu propio codigo.


En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Pregunta Personal Programador JAVA!
« Respuesta #2 en: 4 Agosto 2012, 22:40 pm »

 ;-) ;-) ;-) ;-)

lo que no es normal es que te intereses la mayoría de los programadores son unos incompetentes que crean código imposible de entender y jamas se interesan en eso

la mayoría ni-siquiera sabe que escriben código horrendo es mas en la mayoría de los casos no lo hacen por desinterés o por que piensan que es la manera normal de trabajar

la mayoría no solo programa mal lo peor es que no saben que lo hacen.para ello todo es normal

te felicito que reconozcas en que estas mal y que te interese hacer tu trabajo bien yo te cuento que casi en todos los casos es todo lo contrario
En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Pregunta Personal Programador JAVA!
« Respuesta #3 en: 4 Agosto 2012, 23:14 pm »

aprende ingles usa los dicionarios ensiclopedias libros pregunta usa google wikipedia


Aprende ingles

Toda la documentación de java esta en ingles la mayoría de los libros están en inglés, todo el lenguaje java esta en ingles

estamos en el siglo 21 y me dises que no sabes de que no entiendes el lenguaje usa el maldito google averigua las cosas por tu cuenta se autodidacta tienes libros tienes enciclopedistas tienes diccionarios tienes internet estamos en el siglo donde la información es facil de obtener no puedes decir que no sabes que significan las cosas tienes wikipedia tienes google antes de decir cualquier cosa googlea
« Última modificación: 5 Agosto 2012, 05:03 am por sapito169 » En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Pregunta Personal Programador JAVA!
« Respuesta #4 en: 5 Agosto 2012, 04:24 am »

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
Código
  1. int x=3;//no revela su intencioa
  2. int y=14;
  3. fecNac=new Date();//suprime letras
  4. Per p=new Per();//solo es una letra
  5. String PerName="juan";//usa abreviatura
  6. double weight=14.5;//esta en ingles pero yo escribo para gente que habla español
  7. String jato="av victoria 511";//jato es jerga
  8. String aka="corasonsito511";//aka es abreviatura y neologismo
  9. String suMerced="juan";//arcaismo
  10. String SEP ="Secretaría de Educación Pública";//solo lo entienden los mejicanos y es abreviatura
  11. 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
  12.  

buenos nombres

Código
  1. int cantidadDePersonas=3;//me importa un comino de que el nombre sea largo
  2. 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
  3. Persona persona=new Persona();//eligo el nombre largo y descriptivo no uso abreviaturas es obvio que la variable persona es de tipo persona
  4. Double peso=new Double(); //es obvio que peso es decimal nadie pensario que peso  es de tipo Cadena o de tipo Date  
  5.  
  6.  

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


Código
  1. package com.ejemplo;
  2.  
  3. public class MalEcho {
  4.  
  5.    public static void main(String arg[]) {
  6.  
  7.        double[] x = new double[50];
  8.        int[] y= new int[50];
  9.        sum(x, y);
  10.  
  11.        double z=0;
  12.        z = tot(z, x, y);
  13.        System.out.print(z);
  14.    }
  15.  
  16.    private static double tot(double z, double[] x, int[] y) {
  17.        for(int c=0;c<=3;c++){
  18.            z=z+x[c]*y[c];
  19.        }
  20.        return z;
  21.    }
  22.  
  23.    private static void sum(double[] x, int[] y) {
  24.        x[0]=20;
  25.        x[1]=50;
  26.        x[2]=30;
  27.  
  28.  
  29.  
  30.        y[0]=1;
  31.        y[1]=1;
  32.        y[2]=1;
  33.    }
  34. }
  35.  
  36.  

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

Código
  1. package com.ejemplo;
  2.  
  3. public class Regular {
  4.  
  5.    public static void main(String arg[]) {
  6.  
  7.        double[] precios = new double[50];
  8.        int[] cantidades = new int[50];
  9.        llenarVariables(precios, cantidades);
  10.  
  11.        double respuesta = 0;
  12.        respuesta = obtenerTotal(respuesta, precios, cantidades);
  13.        System.out.print(respuesta);
  14.    }
  15.  
  16.    private static void llenarVariables(double[] presios, int[] cantidades) {
  17.        presios[0] = 20;
  18.        presios[1] = 50;
  19.        presios[2] = 30;
  20.  
  21.  
  22.  
  23.        cantidades[0] = 1;
  24.        cantidades[1] = 1;
  25.        cantidades[2] = 1;
  26.    }
  27.  
  28.    private static double obtenerTotal(double respuesta, double[] precios, int[] cantidades) {
  29.        for (int indice = 0; indice <= 3; indice++) {
  30.            respuesta = respuesta + precios[indice] * cantidades[indice];
  31.        }
  32.        return respuesta;
  33.    }
  34. }
  35.  
  36.  
  37.  
  38.        cantidades[0]=1;
  39.        cantidades[1]=1;
  40.        cantidades[2]=1;
  41.    }
  42. }
  43.  
  44.  


Comentarios

-no pongas comentarios obvios borra todos los comentarios generados por el ide

Código
  1. //creo esta clase para mostrar un ejemplo
  2. //esta clase tiene muchos comentarios
  3.  
  4. /*
  5.  * To change this template, choose Tools | Templates
  6.  * and open the template in the editor.
  7.  */
  8. //esto es un paquete
  9. package com.ejemplo;
  10.  
  11. /**
  12.  *
  13.  * @author luis
  14.  */
  15. //esto es una clase publica
  16. public class NewClass {
  17.  
  18.    //esto es una variable global
  19.    int a;
  20.  
  21.    //esta variable es privada
  22.    private String b;
  23.  
  24.    //esto es un construcor
  25.    public NewClass() {
  26.    }
  27.  
  28.  
  29.  
  30. }
  31.  
  32.  

-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

Código
  1. package com.ejemplo;
  2.  
  3. public class Regular {
  4. //este es el main
  5.  
  6.    public static void m(String arg[]) {
  7. //este es el precio
  8.        double[] p = new double[50];
  9.        //esta el la cantidad
  10.        int[] c = new int[50];
  11.  
  12.        //a qui lleno las variables
  13.        p[0] = 20;
  14.        p[1] = 50;
  15.        p[2] = 30;
  16.        c[0] = 1;
  17.        c[1] = 1;
  18.        c[2] = 1;
  19.  
  20.        double respuesta = 0;
  21.        //a qui obtengo el total
  22.        for (int indice = 0; indice <= 3; indice++) {
  23.            respuesta = respuesta + p[indice] * c[indice];
  24.        }
  25.        respuesta = respuesta;
  26.        System.out.print(respuesta);
  27.    }
  28. }
  29.  
  30.  

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

Código
  1. package com.ejemplo;
  2.  
  3. import java.util.Date;
  4.  
  5. public class Persona {
  6.  
  7.    private String nombre;
  8.    private double salario;
  9.    private Date fechaDeNacimiento;
  10.    private String direcion;
  11.  
  12.    public Persona(String nombre, double salario, Date fechaDeNacimiento, String direcion) {
  13.        this.nombre = nombre;
  14.        this.salario = salario;
  15.        this.fechaDeNacimiento = fechaDeNacimiento;
  16.        this.direcion = direcion;
  17.    }
  18.  
  19.    public Persona() {
  20.    }
  21.  
  22.    public String getDirecion() {
  23.        return direcion;
  24.    }
  25.  
  26.    public void setDirecion(String direcion) {
  27.        this.direcion = direcion;
  28.    }
  29.  
  30.    public Date getFechaDeNacimiento() {
  31.        return fechaDeNacimiento;
  32.    }
  33.  
  34.    public void setFechaDeNacimiento(Date fechaDeNacimiento) {
  35.        this.fechaDeNacimiento = fechaDeNacimiento;
  36.    }
  37.  
  38.    public String getNombre() {
  39.        return nombre;
  40.    }
  41.  
  42.    public void setNombre(String nombre) {
  43.        this.nombre = nombre;
  44.    }
  45.  
  46.    public double getSalario() {
  47.        return salario;
  48.    }
  49.  
  50.    public void setSalario(double salario) {
  51.        this.salario = salario;
  52.    }
  53. }
  54.  
  55.  


herencia y implementacion

Código
  1. package com.ejemplo;
  2.  
  3. public class Factura extends Documento implements Imprimible {
  4.  
  5.    @Override
  6.    public void imprimir() {
  7.    }
  8. }
  9.  
  10.  

Código
  1.  
  2. public class Main {
  3.  
  4.    public static void main(String arg[]) {
  5.        Documento documento = new Factura();
  6.    }
  7.  
  8. }
  9.  
  10.  

Tu codigo debe ser pronusiable debe leerse como español eso se logra siguendo todas las reglas ejemplo

Código
  1. public void presionoBotonGuardar(){
  2.  
  3. Orden orden =leerDesdeElFormulario();
  4.        BaseDeDatos baseDeDatos =new BaseDeDatos();
  5.        if(orden.puedeGurdarseEnBaseDeDatos()){
  6.            baseDeDatos.guardar(orden);        
  7.        }
  8.        else{
  9.            JOptionPane.showMessageDialog(null, "no se puede guardar la orden ");
  10.        }
  11. }
  12.  

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


« Última modificación: 5 Agosto 2012, 06:15 am por sapito169 » En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Pregunta Personal Programador JAVA!
« Respuesta #5 en: 5 Agosto 2012, 06:54 am »

-usa la orientación a objetos para ordenar el código
por ejemplo si te preguntas donde esta la programación de una orden de compra pues en la clase orden de compra si quieres saber donde esta la programación del formulario de la Caja pues en la clase FrmCaja si te preguntas donde esta la programación de la linea de una Orden  pues debe estar en la clase LineaDeOrden
si quieres saber donde esta el total de una orden pues en el método total de la clase orden

-recuerdas para reflejar que una clase tiene relacion de multiplisidad usa Arraylist

-un metodo no puede tener efectos secundarios es decir no puede cambiar de varias formas una clase si el nombre de un metodo dise agregarLinea pues la unica  operacion es agregar una linea a la orden

-solo pueden existir dos tipos de metodo los que cambien el estado de una clase y los que obtiene alguna propiedad calculada de una clase por ejemplo un metodo que cambia el estado de la clase Orden seria agregar linea y otro metodo que obtenga la proíedad total seria obtenertotal

-un metodo no puede cambiar el estado y dar una respuesta al mismo tiempo

-las clases deben seguir las 3 formas normales al igual que las tablas de una base de datos


un ejemplo de la clase anterior con todas las correcciones


Código
  1. Orden orden = new Orden();
  2. orden.agrega(new Linea(2, "litro gaseosa", 14.5));
  3. orden.agrega(new Linea(1, "1/4 de pollo", 10));
  4. orden.agrega(new Linea(3, "churrasco a lo pobre", 25));
  5. System.out.println("El total de la orden es: " + orden.obtenerTotal());
  6. System.out.println("El la cantidad de lineas es:" +orden.obtenerCantidadDeLineas());
  7.  
  8.  


con el siguiente ejemplo ya sabes que hace y no es necesario que leas el resto de las clases puedes simplemente suponer que esta bien

de todas maneras te paso la clase

Código
  1.  
  2. import java.util.ArrayList;
  3. import java.util.List;
  4.  
  5. public class Orden {
  6. private List<Linea> lineas = new ArrayList<Linea>();
  7.  
  8. public void agrega(Linea linea) {
  9. lineas.add(linea);
  10.  
  11. }
  12.  
  13. public double obtenerTotal() {
  14. double total=0;
  15.  
  16. for (Linea linea : lineas) {
  17. total =total+linea.obtnerTotal();
  18. }
  19. return total;
  20. }
  21.  
  22. public int obtenerCantidadDeLineas() {
  23.  
  24. return lineas.size();
  25. }
  26.  
  27. }
  28.  

Código
  1.  
  2.  
  3. public class Linea {
  4. private int cantidad;
  5. private String nombrePlato;
  6. double precio;
  7.  
  8.  
  9.  
  10. public Linea(int cantidad, String nombrePlato, double precio) {
  11. this.cantidad = cantidad;
  12. this.nombrePlato = nombrePlato;
  13. this.precio = precio;
  14. }
  15.  
  16. public double obtnerTotal() {
  17.  
  18. return precio*cantidad;
  19. }
  20.  
  21. }
  22.  

fuersa el lenguaje usando impor static y retornando this el metodos que modifique en el estado
puedes forsar el lenguaje para que tengas propiedades con nombre

solo hazlo con gente con experiensia regular

ejemplo

Código
  1. package com.ejemplo;
  2.  
  3. import static com.ejemplo.Linea.*;
  4. import static com.ejemplo.Orden.*;
  5. public class Main {
  6.  
  7. public static void main(String[] args) {
  8. Orden orden = orden()
  9. .con(linea(cantidad(1), "litro gaseosa", precio(14.5)))
  10. .con(linea(cantidad(1), "1/4 de pollo", precio(10)))
  11. .con(linea(cantidad(3), "churrasco a lo pobre", precio(25)));
  12. System.out.println("El total de la orden es: " + orden.total());
  13. System.out.println("La cantidad de lineas es: "
  14. + orden.cantidadDeLineas());
  15. }
  16. }
  17.  
  18.  
  19.  

Código
  1.  
  2. package com.ejemplo;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. public class Orden {
  7. private List<Linea> lineas = new ArrayList<Linea>();
  8.  
  9. public Orden con(Linea linea) {
  10. lineas.add(linea);
  11. return this;
  12. }
  13.  
  14. public static Orden orden(){
  15. return new Orden();
  16. }
  17. public double total() {
  18. double total=0;
  19.  
  20. for (Linea linea : lineas) {
  21. total =total+linea.obtnerTotal();
  22. }
  23. return total;
  24. }
  25.  
  26. public int cantidadDeLineas() {
  27.  
  28. return lineas.size();
  29. }
  30.  
  31. }

Código
  1. package com.ejemplo;
  2.  
  3. public class Linea {
  4. private int cantidad;
  5. private String nombrePlato;
  6. double precio;
  7.  
  8. private  Linea(int cantidad, String nombrePlato, double precio) {
  9. this.cantidad = cantidad;
  10. this.nombrePlato = nombrePlato;
  11. this.precio = precio;
  12. }
  13.  
  14. public Linea(CantidadDePlatos cantidadDePlatos, String nombrePlato,
  15. PrecioPlato precioPlato) {
  16. this(cantidadDePlatos.cantidad, nombrePlato, precioPlato.precio);
  17. }
  18.  
  19. public double obtnerTotal() {
  20.  
  21. return precio * cantidad;
  22. }
  23.  
  24. public static PrecioPlato precio(double precio) {
  25. return new PrecioPlato(precio);
  26. }
  27.  
  28. public static CantidadDePlatos cantidad(int cantidad) {
  29. return new CantidadDePlatos(cantidad);
  30. }
  31.  
  32. public static Linea linea(CantidadDePlatos cantidadDePlatos,
  33. String nombrePlato, PrecioPlato precioPlato) {
  34. return new Linea(cantidadDePlatos, nombrePlato, precioPlato);
  35. }
  36.  
  37. static class PrecioPlato {
  38. double precio;
  39.  
  40. public PrecioPlato(double precio) {
  41. this.precio = precio;
  42. }
  43.  
  44. }
  45.  
  46. static class CantidadDePlatos {
  47. int cantidad;
  48.  
  49. public CantidadDePlatos(int cantidad) {
  50. this.cantidad = cantidad;
  51. }
  52.  
  53. }
  54.  
  55. }
  56.  



por favor por favor por favor respondan me no me importa si es para decirme que soy troll  pero dignamente algo porfavor no me ignoren
porfavor respondan me no dejes que me deprima
« Última modificación: 5 Agosto 2012, 07:39 am por sapito169 » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Pregunta Personal Programador JAVA!
« Respuesta #6 en: 5 Agosto 2012, 21:13 pm »

Primero que todo muchas gracias x leer el post.
Eventualmente me siento muy disconforme con mi conocimiento como programador, a pesar q yo siempre intento superarme. Me pasa muy seguido que me nombran tecnologias y terminos q no comprendo, leo muchos codigos que no entiendo, o peoor inclusive leo codigo q hice yo mismo y paso considerable tiempo para volver a comprenderlo.
Nose si esto es gral y compartido x todos los programadores o solo es un rasgo mio...
Perdon x el tema del post se q no tiene nada q ver !

A todos nos pasa lo mismo, no te preocupes, sin embargo debes de tener muy en cuenta la documentación, si vas a programas cosas algo complicadas debes por lo menos escribir algunos comentarios de qué es lo que hace esa parte de código, unas ligeras líneas o incluso sólo una línea.

Ahora, la parte intricada podría ayudarse a explicar así misma sólo por los identificadores, lo cual es también de mucha importancia, si estás en Java sigue la notación "camelcase", ejemplo:

Código
  1. int numeroResultadosAfiliacion = 0;

Es preferible que utilices identificadores largos a que los cortes y pierdan algo de su significado.

Otra cosa son los javadoc, es una potente herramienta para documentar, aprende a utilizarla.

Saludos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Pregunta Personal Programador JAVA!
« Respuesta #7 en: 5 Agosto 2012, 21:53 pm »

mmmmmmm

el punto que quiero dejar claro es que debes escoger tan bien los nombres que la documentación sea redundate e innecesaria


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Java pregunta de inicio
Java
Blue_box 5 3,836 Último mensaje 4 Marzo 2005, 09:45 am
por Ambolius
¿Pregunta personal a los usuarios? « 1 2 »
Foro Libre
theluigy13etv 17 5,882 Último mensaje 9 Diciembre 2011, 22:43 pm
por rub'n
Busco socio programador en java, php, myslq, objective- c, etc
Programación General
angelina_slayer 1 3,528 Último mensaje 15 Marzo 2012, 13:14 pm
por Kpy87
Cual es el sueldo medio de un programador junior de Java? Y el de senior?
Java
Carlosjava 1 6,343 Último mensaje 24 Julio 2015, 02:38 am
por Usuario Invitado
Programador Java, el tipo de profesional más demandado en el sector TIC español
Noticias
wolfbcn 0 1,300 Último mensaje 4 Agosto 2016, 21:37 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines