Do most application developers use signed integers in places where they really mean to use unsigned integers? I do it all the time, so do my co-workers. I haven't seen a lot of other extensive codebases (other than the Delphi VCL) and examples on the internet usually use integer. Whereas the VCL developers use their own data types (which would be the most non-lazy way to go about declaring variables).
Something seems a little dreadful about code like this
TStuffRec = record recordID : Integer; thingID : Integer; otherThingID : Integer; end;
when it could be written as
TStuffRec = record recordID : Cardinal; thingID : Cardinal; otherThingID : Cardinal; end;
Functionally, these records almost always work the same (and hopefully will continue to work the same even in 64-bit Delphi). But very large numbers will have conversion issues.
But there are drawbacks to using unsigned ints too. Mainly stemming from how annoying it is to mix the two.
The real question is, is this a thing that actually gets thought about or included in best practices? Is it usually just up to the developer?