A maioria dos desenvolvedores de aplicativos usa números inteiros assinados em locais onde eles realmente pretendem usar números inteiros não assinados? Eu faço isso o tempo todo, assim como meus colegas de trabalho. Não vi muitas outras bases de código extensas (além da Delphi VCL) e exemplos na internet geralmente usam números inteiros. Enquanto os desenvolvedores da VCL usam seus próprios tipos de dados (que seria a maneira mais preguiçosa de declarar variáveis).
Algo parece um pouco terrível sobre código como este
TStuffRec = record
recordID : Integer;
thingID : Integer;
otherThingID : Integer;
end;
quando poderia ser escrito como
TStuffRec = record
recordID : Cardinal;
thingID : Cardinal;
otherThingID : Cardinal;
end;
Funcionalmente, esses registros quase sempre funcionam da mesma maneira (e esperamos que continuem funcionando da mesma forma, mesmo no Delphi de 64 bits). Mas números muito grandes terão problemas de conversão.
Mas também há desvantagens no uso de entradas não assinadas. Principalmente devido ao quão irritante é misturar os dois.
A verdadeira questão é: isso é algo que realmente é pensado ou incluído nas melhores práticas? Geralmente depende apenas do desenvolvedor?