Quanto dovrebbero essere stretti o ampi nomi costanti?

5

Sembro sempre tornare a questa domanda e non posso accontentarmi di una convenzione con la quale mi sento a mio agio o che posso definire concretamente: quando si nomina una costante, quanto deve essere definita in modo stretto o ampio?

Ad esempio, supponiamo di aver scritto un'applicazione per il flusso di lavoro che contiene elementi del flusso di lavoro (istanze del flusso di lavoro) e che hanno, tra le altre proprietà, un "nome palcoscenico". Quando viene avviato un oggetto del flusso di lavoro, otterrà il nome della fase iniziale, che dovrebbe essere una costante. Devo nominare la costante, ad esempio InitialStageName o dovrei nominarla LoanApplicationApproverStageName (assumendo che la prima fase sia la fase di approvazione dell'approvatore di prestito ".) In entrambi i casi, il valore potrebbe essere qualcosa come "LoanAppApprvr" .

Suppongo che si riduca a questo: è più importante nominare la costante in base a come viene utilizzata (ad es. come nome della fase iniziale) o in base a cosa significa (ad esempio, la fase in cui il responsabile dell'approvazione esegue il proprio lavoro)? O dovrebbe esserci qualche matrimonio tra i due - possibilmente avendo due costanti separate che condividono lo stesso valore?

    
posta rory.ap 16.11.2015 - 17:05
fonte

4 risposte

17

Il luogo in cui sono definite le tue costanti è anche importante in quanto tali informazioni migliorano la costante, senza rendere il nome più lungo.

Confronta una classe Constants che contiene tutte le costanti e si trova nello spazio dei nomi MyApp.Global . Puoi avere costanti in là chiamate Width , Height e Radius che in realtà non significano molto essere lì dentro. Queste costanti traggono vantaggio dall'avere nomi più chiari, come DefaultSquareWidth , DefaultRectangleHeight e DefaultCircleRadius .

Confrontalo con una costante definita nello spazio dei nomi MyApp.Shapes sull'oggetto Circle . Il significato di una costante denominata DefaultRadius sarebbe molto evidente a causa di dove lo trovi.

Porsi la domanda se digitare il nome costante in un determinato punto renderà immediatamente evidente ciò che significa. Digitare MyApp.Global.Constants.Radius è molto meno ovvio di MyApp.Shapes.Circle.DefaultRadius o MyApp.Global.Constants.DefaultCircleShapeRadius .

    
risposta data 16.11.2015 - 17:27
fonte
5

Più ampio è l'ambito, più lungo è il nome. Questo perché più si ottiene da una definizione meno chiaro diventa il suo intento.

Un esempio di estremità stretta assurda è una costante a livello di metodo (o variabile). Potrebbe essere un singolo personaggio, sebbene io tendo ad attenermi personalmente al nome del tipo come minimo.

Nell'estremo opposto hai una costante globale. Dovrebbe essere molto dettagliato nel suo nome.

I nomi delle costanti (e delle variabili in generale) dovrebbero sempre riguardare ciò che sono (sostantivo o frasi aggettivo-nome) piuttosto che ciò che fa .

    
risposta data 16.11.2015 - 18:13
fonte
2

Vorrei usare LoanApplicationApproverStageName ; trasmette più significato quando usato:

setInitialState(LoanApplicationApproverStageName);

al contrario di:

setInitialState(InitialStageName);

Guardando il secondo esempio, non si ha alcuna comprensione di come viene impostato lo stato iniziale.

Inoltre, potresti essere tentato di utilizzare questo valore ("LoanAppApprvr") in altre posizioni in cui intendi riferirti a LoanApplicationApproverStageName - lo stage, non è posto come fase iniziale.

    
risposta data 16.11.2015 - 17:26
fonte
0

La tua applicazione avrà sempre una fase iniziale, ma non necessariamente avrà sempre una fase di approvazione delle domande di prestito o, più probabilmente, potrebbe non rimanere sempre nella fase iniziale.

Per questo motivo, chiamerei la costante per riflettere ciò che rappresenta (il nome della fase iniziale) piuttosto che su ciò che attualmente significa

    
risposta data 16.11.2015 - 22:30
fonte

Leggi altre domande sui tag