Se suele decir que hay dos "escuelas", los que defienden el uso de FreeAndNil y los que no
Es una guerra que no va a tener fin nunca y en parte tenes razon German en que va en gustos
Vos decis que es mas ordenado y claro pero a mi me resulta mas desordenado y mas confuso
Cuando tiramos un query desde tiempo de diseño, no hay que andar haciendo chequeos para preguntar si puedo acceder al objeto o a sus propiedades (dejando de lado aquellas que hay que asignar desde afuera como Connection, etc) simplemente el objeto esta ahi, disponible en todo momento para mi; por algo esta declarado en la parte publica del form, tiene un alcance "global" dentro del form, y no limitado dentro de un metodo. A mi me resultaria muy extraño llegar a pensar que ese puntero pueda tener NIL
A mi no se me ocurre un solo caso en el que el uso de FreeAndNil sea necesario
Nunca ni siquiera me gusto la implementacion del metodo, mas que FreeAndNil deberia ser NilAndFree:
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;
end;