I’m direct. I never gossip or say things behind people’s back I wouldn’t say to them straight. I also like directness and honesty in others, as I know where I stand and it builds trust. So, generally, I think directness is preferable. But coming across as judgemental, lacking empathy, self-important or rude isn’t.
As far as the examples you give, if someone keeps cancelling plans at the last minute, I wouldn’t tell them I’m hurt by that. I’d ask if they’re OK. People have all sorts of reasons for cancelling last minute: depression, anxiety, miscarriage, menopause symptoms, migraines, lack of money, controlling partners, relatives who can’t really be left etc etc. They may not want to talk about it or it might betray someone else’s confidence, so they make up an excuse. When people’ve cancelled on me last minute more than once and never attempted to properly explain or rearrange, yet when asked say everything’s fine, I make it clear I’d love to see them (to leave the door open), but stop asking them. Some people really struggle to be assertive and say they don’t want to do something. Not ideal, but persistent cancelling is their way of telling you.
When it comes to people asking what you think of an outfit, I’d tread very carefully. First, we all have different tastes, shapes and backgrounds and feel comfortable in different things. For example, I generally wear black, with the odd bright colour, so anything of a different colour wouldn’t be my taste. But some people think black clothes look draining, funereal or too edgy. I respect that. Second, people often ask to seek reassurance, rather than criticism. Third, most people are sensitive about their appearance and what clothes suit them. Even with a v close friend, I’d always emphasise the positives, rather than highlight negatives. If they’ve chosen the outfit, they obviously like it. The way people dress is what makes them unique. People of all shapes and sizes should feel they can wear whatever they like. As long as they feel comfortable and it’s not grossly inappropriate (e.g. too revealing for a professional setting or potentially offensive slogans), that’s all that matters.