This isn't one of those issues where you can do a whole lot of damage getting it wrong.
That said, no, don't make it a property unless you need to put some logic in the setter or getter, and you probably don't need to. Don't add code that doesn't serve some purpose.
"Fields are bad" isn't a purpose. And in fact, it's nonsense. Fields exist for a reason.
If the class is so huge that nobody can keep track of it all and you need to hide parts from each other, it's too big and it's doing too much. Refactor it into two or more classes that are manageable.
Very often, as a large class grows (most often something that doesn't naturally have a very tight focus, like a major viewmodel, or Window or a Form in the bad old days), we find ourselves writing little "subsystems" within the class that have a field or two with logic in the set and/or get blocks. That's a candidate for refactoring into a separate small class with a clean interface, an easily reusable ball of logic and state that doesn't have its internals mixed in with your big class's internals. Give the big class a private copy of the little helper class. Drag and drop code is an example that springs to mind.
It's a classic progression:
- I'll just add a flag
- That flag I added yesterday has to be an enum
- With a flag
- Wait, I just copy and pasted a block of code. Put that in a setter on the flag.
- And a hel... two helper methods.
- Let's put a
#region
around that mess so I don't have to look at it.
- We're going to have to copy and paste that whole mess into another class. Good thing it's all in one place!
- It wasn't all in one place.
- What's my manager doing with that jacket with the funny sleeves?
If you ever reach Stage 7, it's past time for an intervention.
Private properties are just the first tiny whiff of what may turn into a noxious code smell over time. They're not evil, but they may be a sign that your code is showing a tendency to grow on the wrong axis.
Update
On internal vs external validation
Very often, a class needs to be able to break its own rules, and do so cleanly and straightforwardly. For example, validation of one property/field often depends on values of others (date ranges, etc.). Your classe's internals should be able to set them all in arbitrary order without any funny business (sometimes you see "_disableValidation" flags to work around this issue -- a code smell). Inside the class, validation should be voluntary, and the class should be kept simple enough so that isn't a problem. A class needs to permit itself to put itself in an invalid state temporarily, while forbidding or controlling the ways in which any external code can put it in an invalid state. Maybe if external code puts it in an invalid state, that's permitted by code, but it drives UI that hassles the user. You don't want to have weird flags to allow your constructor to do its job without popping up a message box or something.
Sometimes a class needs to run around nekkid in the privacy of its own home. Validation should be on inputs from code external to the class.