Tipo di ritardo qui, ma mi piacerebbe provare a creare una definizione precisa: le funzioni statiche sono funzioni che non possono o non possono fare riferimento a proprietà / metodi dell'istanza della classe contenente.
In alcune lingue, come C #, potrebbero esserci campi o proprietà statiche nelle classi statiche, quindi non è esatto dire che non sono usati per lo stato; una funzione statica potrebbe utilizzare lo stato statico (globale).
Fondamentalmente, si riduce a: le funzioni statiche, come qualsiasi cosa statica, sono utili quando ha senso che siano sempre disponibili senza dipendenza da istanze non statiche.
Le funzioni di supporto, come le funzioni matematiche, sono un esempio spesso attivato, ma ce ne sono altre.
Se la classe creata richiede che i dati siano immutabili, potrebbe avere senso creare funzioni statiche che includano un'istanza e passino una nuova istanza poiché l'istanza non può (o non dovrebbe) essere modificata. Le classi di stringhe, ad esempio, potrebbero avere funzioni statiche che contengono una stringa (o 2 o più) e passano una nuova stringa.
Un altro motivo potrebbe essere che esiste una classe che mantiene uno stato globale o dati di qualche tipo. Potrebbero esserci funzioni statiche che funzionano con le proprietà o campi statici in quella classe statica.