As a general rule of thumb, you should only really use a property with a backing field when you need to do something else in the getter or the setter - validating some input, changing additional state, or raising a property changed notification, for example:
private string _user;
public string User
{
get { return _user; }
set
{
_user = value;
this.RaisePropertyChanged(x => x.User);
}
}
Otherwise, you can just use an auto-property:
public string User { get; set; }
You don't need a backing _user
field for this.
Personally, I would avoid having public variables on classes.