I Particularly like @property since it permits you to make incremental development toward a greater details design after a while. In prolonged living jobs debugging and refactoring usually takes far more time than creating the code by itself. There are several downsides for utilizing @property.setter that makes debugging even harder: https://jmsmanesar.in/