Using byte is generally better. Typing byte, instead of int, requires 33% more effort.
And using
#define led 13 uses zero bytes.
const byte,
const int, and
#define should all use zero bytes unless you don't use any optimizations or take the address of the constant.
int is a standard C++ type and
byte isn't, so
int is more `portable' and recognizable to people not used to arduino.
uint8_t is more standard but more annoying to type, and in C and C++ you have to include a header file to use it (
stdint.h).
char is undefined as to whether it's signed or unsigned so if you care you have to put `
unsigned' in front of it which is a whole lot more effort.
There's no real good solution. I generally stick with
uint8_t in libraries, but I think
byte is best for sketches