He estado leyendo cosas malas sobre con la palabra clave en Delphi pero, en mi opinión, si no la usa en exceso. Puede hacer que tu código parezca simple.¿La palabra clave "con" Delphi es una mala práctica?
A menudo pongo todos mis TClientDataSets y TFields en TDataModules. Así que en mis formas tuve código como este
procedure TMyForm.AddButtonClick(Sender: TObject);
begin
with LongNameDataModule do
begin
LongNameTable1.Insert;
LongNameTable1_Field1.Value := "some value";
LongNameTable1_Field2.Value := LongNameTable2_LongNameField1.Value;
LongNameTable1_Field3.Value := LongNameTable3_LongNameField1.Value;
LongNameTable1_Field4.Value := LongNameTable4_LongNameField1.Value;
LongNameTable1.Post;
end
end;
sin la con de palabras clave que tienen que escribir el código como este
procedure TMyForm.AddButtonClick(Sender: TObject);
begin
LongNameDataModule.LongNameTable1.Insert;
LongNameDataModule.LongNameTable1_LongNameField1.Value := "some value";
LongNameDataModule.LongNameTable1_LongNameField2.Value :=
LongNameDataModule.LongNameTable2_LongNameField1.Value;
LongNameDataModule.LongNameTable1_LongNameField3.Value :=
LongNameDataModule.LongNameTable3_LongNameField1.Value;
LongNameDataModule.LongNameTable1_LongNameField4.Value :=
LongNameDataModule.LongNameTable4_LongNameField1.Value;
LongNameDataModule.LongNameTable1.Post;
end;
Creo que es más fácil de leer usando el con palabra clave.
¿Debo evitar el uso de la palabra clave con?
Aunque estoy de acuerdo con su uso de lo que en este caso - que no sería necesario sin esta forma de utilizar módulos de datos, que está violando la Ley de Demeter. Delphi necesita que todos los componentes en un módulo de formulario/datos sean públicos, pero es mejor diseñar para no hacer (demasiado) uso de eso. – mghie
Duplicado: http://stackoverflow.com/questions/71419/whats-wrong-with-delphis-with –
Se puede utilizar para fines de optimización, para evitar operaciones de desreferencia adicionales, por ejemplo. – arthurprs