With my closest friends, I am as honest as possible but I do it in a positive way. If I don't agree with a decision they've made or something they've done, I tell them, but I make sure that I'm not judgmental or hurtful. I let them know that even though I don't agree with something they've done, I understand their reason for doing it, and we discuss other solutions.
When it comes to little things, like a person's haircut, or what they're wearing, honesty again depends on the type of friendship. Some people ask for advice on their appearance because they want the truth. So I give it to them. But others ask because they are fishing for a compliment. I'm not a fake person so I won't lie, but I won't tell them the truth either. eg/ One of my roommates dyed her hair and I didn't like it. The first time I saw her after she got it done, she obviously wanted me to comment. Instead of saying "Oh wow your hair look amazing!" I said "Wow you dyed your hair, it looks so different!"