Best coding practice.

@Pavilion
I would say it is a bad practice to use int/long as return value if you only have 0 and 1 to return.
Why?
Because you use more memory than needed. Actually you only need one bit. But bits are kind of hard to use so you use the smallest memory part possible being "byte". Which is 8 times more than you actually need. Making it int means 16 times more memory usage than needed, long .....
When programming for PC/MAC/Mainframe nobody will really care nowadays (it used to be different). When programming a PIC it can make a difference.

As I stated several times before :Your question is really splitting hairs. Because technically there is no difference between boolean and byte on the arduino platform. And in the end the code quality is defined by the code behaviour; which by default will be equal using byte/boolean and 0;1/true/false.
The difference is in the mind of the person that reads it. In other words in the maintainability of the code. In our minds there is a difference between 1 and true. You can say "1 volt" but you can not say "true volt". For the arduino that is the same for humans it is not.

Conclusion: If you want to write readable code:
And you want to use the human boolean concept: use boolean/bool; true and false.
And you want to use values: take the smallest (in memory occupation terms) object that fits your needs. 0->255 => byte -32767 -> 32767 => int ..... (don't forget the unsigned and signed options)
Best regards
Jantje

@WizenedEE

WizenedEE:
bool, true, and false are all part of C++, but not part of C, [citation needed]

I think the text I quoted states that: "bool, true, and false are all part of C++" and "boolean, true, and false are all part of C (since C99)"

WizenedEE:
It's just that you said the arduino files defined them, which is not true.

Can you please quote my statement that makes you think I said so?

WizenedEE:
boolean is completely different and I don't see why anyone would ever use it.

Wikipedia states "C++ has a separate Boolean data type ('bool'), but with automatic conversions from scalar and pointer values that are very similar to those of C."
You state "completely different" wikipedia states "very similar". Please take up your concerns with wikipedia so we all can learn?
Wikipedia states "One problem with this approach is that the tests if(t==TRUE){...} and if(t) are not equivalent."
Which I think is a really good reason not to use bool.
Jantje