Devo inserire metodi di utilità all'interno di una classe?

3

Ho lavorato su una libreria che contiene un ampio set di funzioni. Per semplicità, ho intenzione di utilizzare solo un set come esempio.

Non sono sicuro di quale sia il modo migliore, in termini di facilità d'uso e prestazioni, se dovrei mettere quei metodi forniti come singoli metodi, anteporre la categoria di funzioni, o se è meglio creare una classe che contenga tutti il metodo come metodi statici.

Ad esempio:

Metodi individuali: (p.s. anche questo potrebbe essere scritto senza request_ nel nome della funzione e usando invece Namespaces)

function request_method() { ... }
function request_url() { ... }
function request_useragent() { ... }
....

Metodo classificato:

class Request {
    public static function method() { ... }
    public static function url() { ... }
    public static function useragent() { ... }
    ...
}
    
posta topherg 11.09.2013 - 19:48
fonte

2 risposte

4

La chiave è mettere funzioni logicamente correlate nello stesso spazio dei nomi. Il prefisso come "spazio dei nomi per convenzione" è una cattiva idea. A seconda della lingua, questo ha significati diversi.

  • In una lingua come Java non hai scelta, avrai una classe di utilità.
  • Se sei in una lingua come Haskell, OCaml o Python, questi dovrebbero essere in un modulo.
  • In C ++ hai namespace per lo stesso scopo.

Facendo questo ti lasci l'onere di assicurarti di evitare di nominare scontri con il tuo compilatore. Con i prefissi sei suscettibile di imbattersi in qualcosa come compiler_typecheck_ast . Fa riferimento alla classe nello "spazio dei nomi" compiler_typecheck o è una funzione nel compiler spazio dei nomi che tipografa una ast?

    
risposta data 11.09.2013 - 20:56
fonte
1

Nel tuo caso questi metodi sono tutti pensati per lavorare sull'accesso ai dati delle richieste, quindi non lo sono, non direi che sono solo un metodo di utilità. In realtà sono molto correlati tra loro e metterli in un metodo di richiesta è completamente logico.

Ma quando si parla di metodi di utilità reali, ad esempio, i metodi per lavorare con gli array, inserendoli all'interno di uno statico generico, potrebbero non essere il vero modo OOP, ma offrono molti vantaggi pratici. Da rendere più facile la navigazione del codice nell'IDE per poter utilizzare il caricamento automatico ed estendere queste classi in base all'architettura dell'applicazione.

    
risposta data 12.09.2013 - 08:48
fonte

Leggi altre domande sui tag