C # Namespace Ordering Coding Convention

2

Esiste una convenzione di codifica generale nell'ordinare spazi dei nomi? È sempre ordine di importanza o alfabetico? Al momento, ordino per primi quelli importanti. So che non influisce sul programma, solo curioso sulla convenzione di codifica.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
    
posta CarSpeed87 19.08.2018 - 21:04
fonte

2 risposte

4

Come determineresti l'importanza? Il modo più semplice di ordinare gli usi è di applicare un ordine alfabetico; Tuttavia, è spesso utile fare la differenza tra gli usi che puntano alla libreria .NET e ai propri spazi dei nomi:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

using MyCompany.MySolution.MyModule1;
using MyCompany.MySolution.MyModule2;
using MyCompany.MySolution.MyModule3;

All'interno di questi due gruppi applicherei comunque un ordine alfabetico. Conservo i miei spazi dei nomi al di sotto degli spazi dei nomi di sistema, perché in questo modo sono più vicini al resto del mio codice e più probabilmente visibili.

Mantieni la semplicità!

    
risposta data 19.08.2018 - 21:10
fonte
5

Quando si ha a che fare con lo stile, è sempre più utile prendere uno stile ufficiale se ne esiste uno, o usare quello comunemente adottato dalla comunità di sviluppatori scrivere in una lingua specifica.

Sei fortunato, per C #, c'è uno stile ufficiale creato da Microsoft . Un'altra cosa buona è che Microsoft ha anche sviluppato uno strumento chiamato StyleCop che controlla se il tuo codice è valido.

Due delle regole sono rilevanti per la tua domanda:

  • SA1210: Using directives must be ordered alphabetically by namespace.
  • SA1208: System using directives must be placed before other using directives.

In altre parole, gli spazi dei nomi che iniziano per% co_de vengono sempre prima, ordinati alfabeticamente, e tutti gli altri spazi dei nomi, anche ordinati alfabeticamente, vengono secondo. Non c'è una linea vuota tra i due. Il codice che hai citato nella tua domanda è un'illustrazione perfetta di questo stile.

Rispetto a il tuo approccio :

Quello che suggerisco ha alcuni vantaggi:

  1. Può essere applicato automaticamente invece di una scelta manuale di quale degli usi è più importante. In realtà, questo è quello che è applicato automaticamente in Visual Studio quando chiedi di riordinare gli usi. Avere una cosa in meno a cui pensare durante lo sviluppo ti permette di concentrarti su cose che contano veramente, come la qualità del tuo codice.

  2. Può essere controllato (ad esempio durante un commit).

  3. Non ci sarebbero discussioni inutili tra i tuoi colleghi sull'importanza dei rispettivi spazi dei nomi.

C'è, tuttavia, un grosso inconveniente:

  1. Se si rinomina uno spazio dei nomi, accade spesso che crei scompiglio nei tuoi elenchi di usi ben ordinati in altri file. Mentre Visual Studio rende molto facile riordinare gli spazi dei nomi in un singolo file, non aiuta affatto quando si applica l'ordine in tutti i file di un progetto (e se non sbaglio, Visual Studio non preoccuparsi di correggere l'ordine degli spazi dei nomi quando si rinomina uno).

Rispetto a Approccio di Olivier :

Quello che suggerisco ha i seguenti vantaggi:

  1. Anche in questo caso, il supporto di Visual Studio è a portata di mano. Può essere difficile se devo perdere tempo a riordinare manualmente gli spazi dei nomi (o rallentare il mio IDE installando CodeRush o Resharper).

  2. Un nuovo arrivato non dovrà imparare uno stile diverso da quello comunemente usato dal settore. Questo, da solo, è sufficiente per evitare questo stile.

  3. StyleCop controlla automaticamente questo stile. Se si deve usare lo stile di Olivier, si dovrebbe sviluppare una regola personalizzata per StyleCop. Niente di impossibile, ma ancora lavoro aggiuntivo da fare.

Lo svantaggio è:

  1. Il relativo mix tra namespace interni e spazi dei nomi di terze parti. Questo potrebbe essere un problema se gli spazi dei nomi interni sono denominati in modo incoerente; se sono tutti prefissati dal nome della tua azienda, sono necessariamente insieme se ordinati in ordine alfabetico comunque.
risposta data 19.08.2018 - 23:34
fonte

Leggi altre domande sui tag