Hmm, Mi fuerte preferencia es para const AFilename: String;
Por la razón de que, especialmente para proyectos más grandes, si alguna vez tiene que añadir el código fuente de otro codificador, si han utilizado una gran cantidad de tipos personalizados como TCustomerID, THashValue, TInterestRate, en vez de Integer, Cardinal, Double, entonces tienes muchos de los E2033 antes mencionados para resolverlos.
Incluso un montón de delphi construidas en el código fuente no utiliza TFileName, como:
function MatchesMask(const Filename, Mask: string): Boolean;
Por otra parte, si he definido como una variable AFileName: TFileName;
entonces es obvio que es un nombre de fichero del tipo llamado & no añade cualquier legibilidad para mí, si acaso en algunos casos hace que el código sea menos legible, porque tienes que hacer clic para verificar de qué variable real se deriva.