Писал я тут программу одну, и нужны были там объекты со свойствами, которые нужно read-write. Начал я по привычке делать геттеры-сеттеры, и посетила меня мысль, а нафига, собственно? Удалил я геттеры-сеттеры и сделал все свойства public-ом и проблем не обнаружил вообще никаких.
Объясните, нафига нужна инкапсуляция? Не лучше документацию писать, чем код от мнимого дурака защищать?
Вот с тем, что приходится воротить дикие костыли, когда вдруг в будущем оказывается, что нужна private переменная, а код модифицировать нельзя, я сталкивался.