Non sto parlando di parole OO specifiche della lingua (statico, privato, ecc.).
If you have a method that doesn't need access to any non public fields, properties or methods where should you put the method ?
Se il codice non è correlato con alcuna classe nel tuo dominio, allora può essere una funzione semplice, al di fuori dell'ambito di una classe. Un esempio muto è fattoriale o addirittura fibonacci, o semplicemente riceve un valore e calcola un risultato, non appartiene a nessuna classe in particolare.
Se il codice è una specie di factory
o ha qualcos'altro legato a una certa classe, allora può essere un metodo statico o di classe, o anche un'altra classe.
È importante notare che se la tua lingua consente le funzioni pure , non solo classi e metodi, puoi trarne vantaggio e rendere il tuo design più semplice (per me è uno dei principali svantaggi del linguaggio Java, ma è solo la mia opinione personale).