Not really. Bloated and slow code is bad, whether in an ISR or not
That's your opinion, right?
There's a school of though that unreadable code is bad.
Compare:
PORTB |= _BV(SOME_PIN);
to:
digitalWrite (10, HIGH);
In your case you have to make sure that you have PORTB right, and SOME_PIN right. Back to the datasheet, to see if pin 10 is on PORTA, PORTB or PORTC. And work out which bit SOME_PIN is.
And if I read your code I have to check you got it right.
But if I read:
digitalWrite (10, HIGH);
... I know someone is setting pin 10 on. No argument.
And as electrode says, the higher level code is portable.
Bloated and slow code is bad ...
Does it matter if I am turning on a light in fish tank? Do the fish notice if the light comes on a few microseconds later? Come on.
The same applies to the power supply. Does it *really* matter if, when you turn the knob, the voltage goes up a microsecond later using one method then when you turned the knob with another method? No, because your ability to react to cause-and-effect at a human level isn't that fast.
And as for the bloat, I agree in principle, but this sort of code is not going to use all of the 16Kb/32Kb of the flash memory whichever way you do it.
After watching Dave spending - how long? - debugging the SPI problems ... was it really worth it to save a few bytes, when he will have 12 Kb over anyway?