При разработке приложения в ООП статических методов нужно избежать как можно больше?
Нет, не должны.
Любой метод, который не работает с экземпляром объекта, должен быть статическим
.
Нет смысла требовать экземпляр объекта, если он вам не нужен.
На мой взгляд, статические методы проще, чем методы экземпляра, и поэтому их следует использовать как можно чаще.
Дело в том, чтобы знать, когда это невозможно: что обычно бывает, то есть всякий раз, когда методу необходимо прочитать или записать элементы данных объекта / экземпляра.
Это зависит от обстоятельств - статический метод необходим в языке ООП, таком как Java или C #, если вам действительно просто нужно написать автономную функцию. В этом случае вы можете создать своего рода класс Utility
, содержащий различные статические методы.
Есть очень специфические случаи, предписывающие их использование, например, передача метода класса в C API, которому нужен указатель функции, или средство для создания определенных паттернов, таких как Singleton. Как правило, вы не захотите использовать их, если нет веской причины.
В других случаях их использование не рекомендуется, поскольку их использование за пределами некоторых ограниченных случаев подразумевает наличие глобальных данных, поскольку они не имеют автоматического доступа к указателю 'this'. Это нарушает принципы ОО, такие как сокрытие данных.