Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   -Syntax Censor- WITH, GOTO, and LABEL (https://www.clubdelphi.com/foros/showthread.php?t=95757)

Neftali [Germán.Estévez] 15-07-2022 10:02:40

-Syntax Censor- WITH, GOTO, and LABEL
 
Hace poco desde Embarcadero se propuso un debate sobre el uso de algunos elementos de la sintaxis de Delphi (sintax censor).
Fue sobre el FreeAndNil.

Tuvo bastante éxito y salieron opiniones y argumentos interesantes, así que ahora han propuesto uno nuevo. Me ha parecido interesante y lo traslado aquí (aunque creo que alguna vez ya hemos comentado sobre el tema).

En concreto este va sobre el uso deestos 2 elementos de la sintaxis en Delphi (y pongo las 4 respuestas posibles):

(1) WITH
  • ¡Me encanta!
  • Tiene sus usos, preservarlo
  • Deprecar y generar un Warning al usarlo
  • Eliminarlo definitivamente con fuego!!

(2) GOTO/LABEL
  • ¡Me encanta!
  • Tiene sus usos, preservarlo
  • Deprecar y generar un Warning al usarlo
  • Eliminarlo definitivamente con fuego!!
Estaría bien, escoger y poner un pequeño comentario justificando la respuesta.

Animaros!!!

Neftali [Germán.Estévez] 15-07-2022 10:03:21

Contesto el primero...
---------------------------------------------------------------


(1) WITH => Tiene sus usos, preservarlo

Personalmente no lo uso y además lo desaconsejo por los errores que puede producir y las confusiones que puede generar cuando lees código (ya seas tú mismo o otra persona).

Si lo que se puede evitar con el WITH, es algo muy largo tipo:

Código Delphi [-]
TBitBtn(Builder.FormPresentacion.aControles[i])...
TBitBtn(Builder.FormPresentacion.aControles[i])...
TBitBtn(Builder.FormPresentacion.aControles[i])...

Lo que hago es crear una variable, asignarlo y utilizar la variable:

Código Delphi [-]
c := TBitBtn(Builder.FormPresentacion.aControles[i]);
c...
c...

Aun así voto por dejarlo porque entiendo que a otras personas les puede ser útil.


(2) GOTO/LABEL => Eliminarlo definitivamente con fuego!!

Sólo lo uso en ficheros .CMD/.BAT que uso para automatización. En Delphi nunca lo he usado, es más, ni sabía que se podía utilizar.

dec 15-07-2022 12:14:32

Hola a todos,

Voto por dejar el "with"... aunque ciertamente... puede confundir... pero depende y cómo: si se usa bien (si no se andan mezclando) puede estar bien, aunque, en efecto no deja de ser algo que puede evitarse. Y respecto del "goto / label" opino lo que tú, Germán, no lo he usado nunca en Delphi, y, es porque no lo he visto necesario hasta ahora. :)

Casimiro Notevi 15-07-2022 13:58:36

With: Nunca lo uso. Aunque lo dejaría pero avisaría de que puede ser peligroso. (No está esa opción).
Goto: No sabía que existiera para Delphi.

egostar 15-07-2022 16:46:04

WITH => Tiene sus usos, preservarlo

Me es útil cuando no quieres crear una variable pero quieres utilizar el objeto para algo específico

Código Delphi [-]
with objeto.create do
begin
  ....
end;

Pero..... como siempre hay un pero, en otros usos resulta en errores de lógica cuasi fatales.

GOTO/LABEL => Deprecar y generar un Warning al usarlo

Lo usé con Turbo Pascal 5.0 y me fue de utilidad, lo dejaría solo por cuestiones sentimentales :)

Saludos

ElKurgan 17-07-2022 16:00:24

With -> Preservarlo, lo usa muchísima gente

Goto/label -> Tampoco lo he usado nunca, así que no veo porqué debería usarlo a partir de ahora

Saludos

Ñuño Martínez 25-07-2022 18:34:29

Casi unanimidad, oyes.

WITH no suelo usarlo, aunque alguna vez se me ha escapado. Yo lo dejaría.

LABEL/GOTO es una reliquia. La verdad es que puede ser peligroso (al menos antiguamente, que te permitía saltar de una rutina a otra diferente, aunque creo que lo cambiaron en un Turbo Pascal para que no se permitieran saltos cruzados). Yo nunca lo he usado en Delphi ni en Free Pascal. No sé si quitarlo, pero unos Warning bien gordos estarían bien.

kuan-yiu 26-07-2022 10:02:43

(1) WITH: Tiene sus usos, preservarlo
Clarifica el código cuando se usan nombres largos (me gusta que sean explicativos) pero detesto cuando un with ocupa líneas y líneas de código (con más de 30 se convierte en un engorro y algo peligroso).

(2) GOTO/LABEL: Eliminarlo definitivamente con fuego!!
Nunca me ha gustado, aunque tengo código que lo usa (programas muy antiguos en los que impera la norma de si funciona no se toca).

Neftali [Germán.Estévez] 28-07-2022 08:26:17

Pues aquí algunos resultados de la encuesta general.
Sorprende alguno, por cierto...
(al menos a mi)


Neftali [Germán.Estévez] 28-07-2022 10:02:39

Aquí el resumen completo:
https://blogs.embarcadero.com/delphi...es-and-replay/

Los gráficos completos.

¿Los quemamos también? :D:D:D:D


Casimiro Notevi 28-07-2022 10:40:15

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 547640)
¿Los quemamos también? :D:D:D:D

A la hoguera con ellos ^\||/

kuan-yiu 28-07-2022 11:57:20

No estoy a favor de la violencia. Todo el mundo es libre de estar equivocado, y los demás somos libres de mirarlos mal. :D

Casimiro Notevi 28-07-2022 12:01:58

Cita:

Empezado por kuan-yiu (Mensaje 547643)
No estoy a favor de la violencia. Todo el mundo es libre de estar equivocado, y los demás somos libres de mirarlos mal. :D

Tienes razón, la hoguera es demasiado cruel, es mejor la guillotina, es más rápida y así no sufrirán :rolleyes:


La franja horaria es GMT +2. Ahora son las 16:58:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi