Hahaha you really fired up people Andrew judging by the comment section. All these holy grails of software engineering deserved a kick in the butt in my opinion. There are far too many cults forming around various principles and practices who try to follow these things in the most pedantic way possible.
It is worth reminding yourself that programming language is an art. You need to develop good taste. When to follow a principle and when to ignore it. Always challenge yourself, by asking “why” following a particular principle is good in each case.
To me the most important question is: “how expensive would it be to fix or change this later?” By that I mean can changes be localized or are they the type of change that an IDE refactoring tool can change in a trivial manner.
Setters and getters as you mentioned is such a thing. Today it is trivial to change and thus public variables will often work just fine. But if you make your API published to clients, then you got to be more careful as modifying a public facing API is expensive.
Thus I try to keep things simple and prioritize making code easy to read and avoid too many dependencies. Very often you can implement something yourself instead of pulling in a large library. People hung up on DRY, don’t do that. They are to eager to use external libraries even if it is just a trivial function they are importing.