I’m a huge fan of always wrapping my fields with properties…it just feels right.
To me the effort in wrapping is minimal (having a macro that creates either readonly or normal properties for the selected fields helps). When I see code that just has a mixture of public fields and properties IMHO it smacks of laziness.
But I agree with the earlier comment about context. I mostlt develop domain layer code…so my classes generally fall into three categories: services, entities and value objects. I like all my value objects to be immutable (which properties help with), my O/RM likes entities to have properties, and my service classes generally don’t need properties.
At our company we don’t use hungarian (except maybe in web apps) but we do use scope prefixes: m_, p_ and s_ (s_ is for static fields, and p_ is for parameters).
When I was first introduced to p_ for parameters i HATED it, but my project lead at the time said that the feeling would pass after two days…and it did. I use it all the time now and find it incredibly useful. It’s kindof hard to explain but I don’t know anyone who’s tried it for a couple days who doesn’t then go on to use it all the time.