Ci sono un sacco di ottime risposte qui, e sono molto più perspicaci e ben informati di qualsiasi altra che potrei mai avere come risposta, ma sento che c'è qualcosa che non viene affrontato:
"Il nostro architetto ha deciso di utilizzare tutti i metodi statici per tutte le API. Il suo ragionamento è che i metodi statici sono leggeri e avvantaggia le applicazioni Web mantenendo il carico del server ."
(l'enfasi è mia)
Il mio 2c su questa parte della domanda è questo:
In teoria, ciò che viene detto è vero: chiamare un metodo statico ha solo il sovraccarico di invocare effettivamente quel metodo. Chiamare un metodo non-statico (istanza) ha il sovraccarico extra della prima istanziazione dell'oggetto e, a un certo punto, distruggere l'istanza (manualmente o tramite una qualche forma di garbage collection automatica, a seconda della piattaforma utilizzata).
Suona un po 'l'avvocato del diavolo su questo: possiamo andare ancora oltre e dire cose del tipo:
-
questo può diventare davvero brutto se viene creata un'istanza per ogni chiamata del metodo (istanza) (invece di lasciarla statica e chiamarla in quel modo)
-
a seconda della complessità del costruttore, del tipo gerarchia, altri membri dell'istanza e altri fattori sconosciuti, il sovraccarico extra della chiamata al metodo non statico può variare e diventare veramente grande
In verità, IMHO, i punti di cui sopra (e l'approccio generale di "usiamo la statica perché sono più veloci") sono argomenti / valutazioni di Straw Man:
-
se il codice è buono e, più specifico per questo argomento, se le istanze vengono create solo quando necessario (e distrutte in modo ottimale), non si ottiene alcun sovraccarico dall'uso dei metodi di insance quando appropriato (perché se crei solo gli oggetti necessari, questi sarebbero stati creati anche se quel metodo è stato dichiarato come statico, dove altrimenti = overhead stesso istanza)
-
abusando della dichiarazione dei metodi statici in questo modo, è possibile nascondere alcuni problemi con il codice in relazione a come vengono create le istanze (poiché il metodo è statico un codice di instanciazione errato può passare inosservato fino a un momento successivo, e questo non è mai bene).