Esiste un modo ideale per memorizzare gli elementi relativi allo spazio dei nomi?

4

Nel titolo, con elementi relativi allo spazio dei nomi , mi riferisco a Enums , Delegates e ad altri elementi che non appartengono a una singola classe, ma all'intero spazio dei nomi o applicazione . So che posso inserirli nello spazio dei nomi praticamente ovunque, ad esempio, se utilizzo WPF, di solito li inserisco in App.xaml.cs, in modo che io sappia sempre dove trovarli tutti:

namespace MyNameSpace
{

    enum MyEnum
    {
       element1, element2
    };

    public delegate void MyDelegate();

    public partial class App : Application
    {
        /*some App-wide code here*/
    }
}

Vorrei sapere, tuttavia, se esiste un modo generalmente accettato per fare ciò che gli sviluppatori dovrebbero conoscere e usare come nella forma di Design Pattern o Best Practices , in modo che io possa abituarmi a questo presto. Sarei anche lieto di leggere dei modi non esattamente generali, ma pratici con (breve) spiegazione (ad esempio, usa meno risorse di un altro modo, o è più facile a UnitTest ecc.) Come a perché è quel particolare modo di organizzare questi articoli è buono.

    
posta rTECH 05.07.2017 - 12:19
fonte

2 risposte

5

Perché non il proprio file all'interno del namespace appartiene?

Ad esempio, se sto lavorando su questioni legali nel mio progetto di dominio e ho un enum di MatterStatus, posizionerei l'enum con un file MatterStatus.cs nello spazio dei nomi Domain.Legal.Matters .

Non solo mette i file dove mi aspetto che siano, ma quando ho bisogno di effettivamente che enum in codice, è uno spazio dei nomi ragionevole per me farlo .

Sarei diffidente nell'archiviare le enumerazioni a livello aziendale in un progetto a livello di applicazione (come WPF). Che cosa succede se è necessario utilizzare qualche altra utilità di frontend? Non sarai in grado di riutilizzare quell'enumerazione a meno che tu non la abbia in un progetto che sia WPF sia detta utility possano fare riferimento (ad esempio, un dominio o un livello aziendale)

Una volta ogni tanto, se si tratta di un modello molto semplice, includerò l'enum direttamente nel file della classe principale:

namespace MyProject.Domain.Legal.Matters
{
    public enum MatterStatus {
        Open,
        Closed
    }

    public class Matter { ... }
}
    
risposta data 05.07.2017 - 13:07
fonte
3

Oltre alle buone pratiche menzionate da @ jdl134679 ci sono anche delle cattive pratiche che dovresti evitare: per esempio non dovresti creare spazi dei nomi come Enums o Delegates che non hanno alcun valore pratico. Se vuoi raggruppare le tue enumerazioni (o qualsiasi altra cosa) insieme, puoi creare una nuova cartella per loro (a volte lo faccio per oggetti simili) ma ricorda di rimuovere il suo nome dallo spazio dei nomi se crei un nuovo file o se sei usando ReSharper per dirgli che questa cartella non è un provider di spazi dei nomi (puoi impostarlo nelle proprietà).

Un altro spazio dei nomi che viene spesso abusato è lo spazio dei nomi Common . Dovresti avere una buona ragione per farlo e non usarlo per scaricare tutto ciò che non sembra adattarsi a nessun altro.

Per quanto riguarda i file e i delegati separati, li tratto in modo eccezionale e di solito li metto nello stesso file che li richiede.

Se non sei sicuro di come organizzare i tuoi file e hai bisogno di ispirazione, ti suggerisco di dare un'occhiata a Visualizza > Object Explorer e vedere come .Net è organizzato.

    
risposta data 05.07.2017 - 15:53
fonte

Leggi altre domande sui tag