Another thing to keep in mind is NOT to use FOR or WHILE loops if they take any appreciable time to complete - anything more than 100 microsecs or thereabouts - as they block the Arduino from doing other things until they complete.
If you need to repeat something that takes longer then just allow loop() to do the repetition and test the condition with IF
This is where this often repeated mantra, in variety of ways, does disservice because it makes such forceful and general statement.
Such statements are often justified , in this case not explicitly, to be of benefits to beginners.
There are few things in Arduino (concept) . allow ME to be general, which since its conception have been problematic for beginners.
Concept of "hiding the main() " and letting the loop() to control the program flow being one of the major issues.
IMHO It essential y keeps the beginner from fully understanding the software process - both development and debugging and encourages blind "cut and paste".
Any hobbyist who gets bitten by the "making robots go " bug soon realizes limits of Arduino ways, like it or not.
And the majority who are happy with blinking LED's soon find another hobby.
Like it or not, they just ignore posts like yours and mine.
That is reality and it is naive to think otherwise.
Off soap box, got some SPI code to work on...