Yes, using a macro to reduce coding is preferable, as well as placing all code into one location. You are not saving any coding in this situation because the macro needs to know which room called it and then execute accordingly. But you do have all similar (but not identical) code in one location, which is sometimes beneficial. IOW, there is no one right way to code what you’re trying to accomplish.
And yes, equating macros to a function is correct. However, unfortunately, you cannot easily pass variables into the macro as you would with a function, and you don’t get a return value without doing additional programming.