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.