Entiendo que la única utilidad del with dentro del lenguaje es eliminar determinadas "palabras" de forma reiterativa en un bloque de código.
Si resulta que para poder usar el with ahora vamos a introducir la necesidad de usar una nueva palabra, ¿no será mejor no utilizarlo?
Es decir, creo que usar el with (que creo que es lo que proponéis) usando un identificador (it o idem) es lo mismo (o es peor) que usar una variable y declararla del tipo correcto.
Me explico:
Ahora tenemos esto:
Código Delphi
[-]
var
John, Sarah : TCustomer;
begin
with John do
begin
firstName := 'John';
lastName := 'Smith';
address1 := '7 Park Drive';
address2 := 'Branston';
address3 := 'Grimworth';
city := 'Banmore';
postCode := 'BNM 1AB';
end;
Para solventarlo, proponemos crear una directiva condicional y obligar a escribir esto:
Código Delphi
[-]
var
John, Sarah : TCustomer;
begin
with John do
begin
idem.firstName := 'John';
idem.lastName := 'Smith';
idem.address1 := '7 Park Drive';
idem.address2 := 'Branston';
idem.address3 := 'Grimworth';
idem.city := 'Banmore';
idem.postCode := 'BNM 1AB';
end;
Creo que en comparación con esto, estamos liando las cosas...
Porque resulta que al final, para poder utilizar el with (cuya ventaja creo que es eliminar determinadas palabra repetitivas), estamos obligando al usuario a escribir más código con otra palabra que se repite (y menos entendible) que si escribiéramos el código natural.
Código Delphi
[-]
var
John, Sarah : TCustomer;
begin
John.firstName := 'John';
John.lastName := 'Smith';
John.address1 := '7 Park Drive';
John.address2 := 'Branston';
John.address3 := 'Grimworth';
John.city := 'Banmore';
John.postCode := 'BNM 1AB';
O no lo entiendo o no lo veo.
NOTA: El código de ejemplo está extraído de la explicación del WITH de DelphiBasics.