Un peu tard, mais j'aimerais essayer de créer une définition précise: les fonctions statiques sont des fonctions qui ne font pas ou ne peuvent pas référencer les propriétés / méthodes d'instance de la classe contenante.
Dans certains langages, comme C #, il peut y avoir des champs statiques ou des propriétés dans les classes statiques, il n'est donc pas tout à fait exact de dire qu'ils ne sont pas utilisés pour l'état; une fonction statique peut utiliser un état statique (global).
Fondamentalement, cela se résume à: les fonctions statiques, comme tout ce qui est statique, sont utiles quand il est logique qu'elles soient toujours disponibles sans dépendance sur les instances non statiques.
Les fonctions d'aide, comme les fonctions mathématiques, sont un exemple souvent cité, mais il en existe d'autres.
Si la classe que vous créez nécessite que les données soient immuables, il peut être judicieux de créer des fonctions statiques qui prennent une instance et transmettent une nouvelle instance car l'instance ne peut pas (ou ne devrait pas) être modifiée. Les classes de chaînes, par exemple, peuvent avoir des fonctions statiques qui acceptent une chaîne (ou 2 ou plus) et retransmettent une nouvelle chaîne.
Une autre raison pourrait être qu'il existe une classe qui conserve un état global ou des données d'une certaine sorte. Il peut y avoir des fonctions statiques qui fonctionnent avec les propriétés ou champs statiques de cette classe statique.