Ver Mensaje Individual
  #35  
Antiguo 20-09-2016
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.309
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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
  // Set up the John's customer details
  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
  // Set up the John's customer details
  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
  // Set up the John's customer details
  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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita