PDA

Ver la Versión Completa : -Syntax Censor- WITH, GOTO, and LABEL


Neftali [Germán.Estévez]
15-07-2022, 10:02:40
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:

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 := 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


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)

https://i.imgur.com/YydmTBG.png

Neftali [Germán.Estévez]
28-07-2022, 10:02:39
Aquí el resumen completo:
https://blogs.embarcadero.com/delphi-developer-debate-with-goto-label-sllides-and-replay/

Los gráficos completos.

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

https://i.imgur.com/Q86rWRm.png

Casimiro Notevi
28-07-2022, 10:40:15
;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
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: