Чем меньше публичных свойств и методов у класса, тем лучше защита "от дурака". Свойства класса (property) хорошо тем, что их можно легко делать read-only и защитить от нечаянного изменения. А еще в геттере/сеттере можно добавить проверку корректности, сделать потокобезопасное (внутри critical section) присвоение или расчет.