To keep consistent with Atmel conventions, you should probably say:
if ((DDRB & DDB4) == DDB4)
(although personally, I rather dislike having the same bit have different names depending on which register it's in, especially when you get things like multiple identical uarts and are supposed to use RXC0 or RXC1 as if they had different values. Sigh.)
(On the plus side, Atmel does seem to have named every bit, and if you stick to their definitions, your code with theoretically be more understandable by everyone...)
you are 100% correct, and the (gcc) compiler optimizes the code to what you proposed, but the main reason is to be explicit and future proof as Makuna pointed out.
future proof, I like the term, it's like backwards compatibility in advance
I thought future proof means paying more for your electronics at big box shops like the only one man standing: Best Buy in US and then you are promised to be able to sell your electronics back at a "good" price when you upgrade to a new one, again from their shop.