Ir al contenido


Foto

Metodos sobrecargados vs metodos "separados"

encuesta poo diseño sobrecarga overload

  • Por favor identifícate para responder
8 respuestas en este tema

Encuesta: Metodos sobrecargados vs metodos "separados" (9 miembros han emitido voto)

Qué crees que es mejor?

  1. Metodos sobrecargados (9 votos [100.00%] - Mostrar)

    Porcentaje de voto: 100.00%

  2. Metodos "separados" (0 votos [0.00%])

    Porcentaje de voto: 0.00%

Votar Los invitados no pueden votar

#1 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 15 octubre 2016 - 06:27

Acabo de abrir una encuesta en la comunidad de Desarrolladores Delphi de Google Plus
 
La encuesta reza lo siguiente:
 
Que crees que es mejor? (teniendo en cuenta gustos, legibilidad, flexibilidad, performance.. lo que se les venga a la cabeza)

 

 
Metodos sobrecargados:
 


delphi
  1. procedure Foo(const Text: string); overload;
  2. procedure Foo(const Text: string; const Args: array of const); overload;

 
Metodos "separados": 
 


delphi
  1. procedure Foo(const Text: string);
  2. procedure FooFmt(const Text: string; const Args: array of const);


Editado por Agustin Ortu, 15 octubre 2016 - 06:34 .

  • 0

#2 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 15 octubre 2016 - 06:32

Traduciendo mi respuesta del ingles:
  • Yo voto por la opcion de metodos sobrecargados, sobre todo por la legibilidad y porque se escribe menos.
  • Ademas, da la sensacion de que la clase es mas simple porque parece que hay "menos metodos"
  • Por ultimo, el IDE es capaz de mostrar al mismo tiempo todas las "posibilidades" del metodo en cuestion. De esa manera obtengo en un instante mas informacion de que puede hacer la clase, sin tener que ponerme a revisar si "habra algun metodo que hace lo mismo del string pero que me permita pasarle el arreglo para el Format? o tengo que invocar yo mismo a Format?"

  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 15 octubre 2016 - 07:34

Yo voto por los métodos sobrecargados, hay muchas ventajas al usarlos. 

 

Saludos


  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 15 octubre 2016 - 09:24

Yo voté por sobrecargados.

Y es que es, a mi parecer, la opción más conveniente. De entre ambas, tiendo a esa.

Hay que aprovechar la sobrecarga mientras sea posible, para eso está. Y comparto los mismos puntos que señalas.

 

Ahora bien, cuando empiezan a aparecer muchas sobrecargas puede que se nos líe la cosa. Y sobre todo existe una alta posibilidad de que dos o más métodos sobrecargados tengan los mismos tipos y/o igual cantidad de parámetros y en el mismo orden (no es sano que en un método cierto parámetro esté primero, y en otro sea el tercero... debe haber armonía en nuestro código). Cuando se da eso el compilador entra en conflicto y no sabe distinguir cual aplicar.

Para esas circunstancias es mucho más apropiado el 2do enfoque.

 

Algo de esto tuve que lidiar cuando estuve diseñando mi biblioteca/API para operaciones de álgebra lineal. Si bien el hilo que inicié trataba otras aristas de problemáticas, si me he topado con el dilema de cuanto overload me sería permitido hasta llegar a un conflicto debido a la diversidad de parámetros, tipos y formas de encarar las operaciones.

Mi biblioteca tiene sus overloads, pero también tuve que irme por mantener separados las cosas para un buen puñado de operaciones.

La estuve ampliando hace unos meses, y posiblemente para otros proyectos pensados iniciar el año que viene deberé ampliarla más aún.

Comenzó siendo un bebé, y ahora es un pequeño infante... con lo que tengo planeado incorporarle, va a quedar un pre adolescente... por lo menos.

 

Asi que, tu verás. No creo que exista una respuesta definitiva, como dice el compañero Egostar... DEPENDE, DEPENDE, DEPENDE. ;)

Haz un análisis de la variedad de métodos que tendrás, y en base a eso luego decide que alternativa implementar.

 

Saludos,

PD: No tengo cuenta en G+. No se que tan difundida es, comparada a las otras redes sociales es muy pequeña tengo entendido. No he visto todo el debate que se haya generado por ahí. De lo poco que veo, desde el anonimato y que es público tus publicaciones son en inglés.

Yo suelo moverme más por facebook y mayormente es para mantenerme en contacto con amigos de secundaria y/o de la facultad. Tengo que admitir que tengo poca participación social en el área Delphi... alguna que otra participación en el grupo Delphi Solidario. En Twitter tengo menos presencia; más que nada la uso para acercarme a periodistas y notas de investigación que los medios frecuentes y tradicionales no le dan mucha participación e informarme en cuanto a política y algo de ciber seguridad.


  • 0

#5 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 16 octubre 2016 - 10:11

Es bastante grande la comunidad de Google. Diría que internacionalmente es el primer referente, dado que los foros oficiales no los usan tanto; en la época de Borland supe que hubo una lista correo, que usaban para estos fines, pero se perdió por algún motivo

Una de las cosas más interesantes es que participan también del lado de Embarcadero, por ejemplo es muy normal ver a Marco Cantu, a David I.. Incluso Allen Bauer sigue comentando bastante seguido

Aún así, no participo de la misma manera que en las comunidades latinas, en donde me siento mucho más agusto, y me limito más a leer.

Pero es interesante el pegarle una ojeada de tanto en tanto porque mucha gente pública cosas interesantes, como componentes, bibliotecas, pequeñas funciones, etc

Editado por Agustin Ortu, 16 octubre 2016 - 10:12 .

  • 0

#6 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 16 octubre 2016 - 01:50

La sobrecarga en C/C++ es algo tan natural, que no hay ni que especificarla, basta con que los parámetros sean diferentes.

 

Voto por la sobrecarga.


  • 2

#7 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 16 octubre 2016 - 09:47

Voté por los métodos sobrecargados por la simple razón que el nombre de los métodos idica normalmente su función, más allá de los parámetros que requiera.

Hace un tiempo en un desafío escribí un código usando una función sobrecargada para que tome un parámetro con otro tipo de variable, aunque llame a un único procedimiento. Esto creo que se ve más natural.

 

Saludos


  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 17 octubre 2016 - 08:17

Hola

 

Hay un detalle, muchas veces yo genero funciones o procedimientos del siguiente estilo:


php
  1. function hasAlgo(cadena: string = 'default'; clase: TClase = nil; numerico: integer = -1): Boolean;

Que diferencia tiene con los métodos sobrecargados, es decir, aunque en concepto sean diferentes, operan de forma similar.

 

Saludos


  • 0

#9 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 17 octubre 2016 - 10:56

Hola

 

Hay un detalle, muchas veces yo genero funciones o procedimientos del siguiente estilo:


php
  1. function hasAlgo(cadena: string = 'default'; clase: TClase = nil; numerico: integer = -1): Boolean;

Que diferencia tiene con los métodos sobrecargados, es decir, aunque en concepto sean diferentes, operan de forma similar.

 

Saludos

 

No comprendo del todo como relacionar tu ejemplo con el debate.

Tu ejemplo habla de un método (para el caso una función) que recibe parámetros por defectos.

Así como está declarado, se puede dar el caso en que todos sean opcionales y por tanto puede que no se requiera pasarle parámetro alguno.

 

Pueden existir métodos sobrecargados con parámetros opciones, si. Puede que sean de interés en muchas ocasiones.

El asunto pasa cuando hay muchos parámetros e implementaciones diferentes que pudiera llevar a que el compilador no sea capaz de distinguir cual de las opciones es la que busca utilizar. Ya sean con y/o sin parámetros opcionales.

 

La sobrecarga es muy útil, pero también tiene sus límites y es preferible en ciertas ocasiones no sobrecargar demasiado y tener por "aparte" métodos que amplíen u ofrezcan nuevas implementaciones. De todas formas esto no evita que desde un método "Separado" se invoca a uno sobrecargado.

 

Saludos,


  • 0





Etiquetado también con una o más de estas palabras: encuesta, poo, diseño, sobrecarga, overload

IP.Board spam blocked by CleanTalk.