Combinando le istruzioni logiche su 1 riga in C #?

1

Una semplice domanda se questo sia o meno un modo corretto di combinare le dichiarazioni logiche per scopi di leggibilità e organizzazione.

Il modo "standard" in cui mi è stato insegnato a scrivere codice:

txtbox_vendor.Visible = false;
txtbox_vendor.Enabled = false;
txtbox_vendorCity.Visible = false;
txtbox_vendorCity.Enabled = false;
txtbox_vendorState.Visible = false;
txtbox_vendorState.Enabled = false;

Ora ovviamente se ho una quantità enorme di caselle di testo o di oggetti che vengono accesi e spenti, sarebbe meglio scrivere in questo modo:

txtbox_vendor.Visible = false; txtbox_vendor.Enabled = false;
txtbox_vendorCity.Visible = false; txtbox_vendorCity.Enabled = false;
txtbox_vendorState.Visible = false; txtbox_vendorState.Enabled = false;

Ovviamente, le prestazioni non saranno un problema.

Ma la seconda opzione è considerata un modo corretto di scrivere il codice per la leggibilità? O è accigliato?

    
posta Gary.Taylor717 01.09.2016 - 21:37
fonte

3 risposte

8

Lo standard è un codice dichiarazione per riga. Se un'istruzione è troppo lunga, dovrebbe essere suddivisa su più righe nel file. Il contrario non è vero.

Perché?

  • Le unioni di codice automatizzate si basano su un'istruzione per riga
  • Le tracce dello stack identificano la posizione del codice per numero di linea; con più di una dichiarazione per riga, un numero di riga è ambiguo
  • Un'istruzione per riga consente una facile lettura del nesting tramite indentazione
  • Un'istruzione per riga è coerente con il codice generato dalla maggior parte dei wizard del codice (diversi dai minifiers).
  • Gli strumenti per diffondere file come Beyond Compare sono molto più facili da usare con una istruzione per riga

Era il seguente linguaggio non era comune ma piuttosto accettabile:

txtbox_vendor.Visible = txtbox_vendor.Enabled = txtbox_vendorCity.Visible = false;

Tecnicamente questa è una dichiarazione. Questo funziona perché l'output dell'operatore = (assegnazione) è il valore che viene assegnato. Trovo confuso e non è più comune o incoraggiato .

Da una nota a margine, se ti imbatti in molte situazioni in cui stai anche considerando di utilizzare più istruzioni per riga, come nel tuo esempio, devo chiedermi se il tuo codice soffre di altri problemi stilistici e strutturali più seri, per esempio mancanza di modularità o mancato rispetto del principio di responsabilità singola .

P.S. Non è necessario impostare Enabled=false se si imposta Visible=false . Se insisti sull'impostazione di entrambi, valuta l'utilizzo di un metodo di estensione per combinarli in un'unica chiamata, e quindi in una riga.

    
risposta data 02.09.2016 - 01:21
fonte
8

Gruppi di cose uguali possono essere messi in un array / collezione e ripetuti per evitare grandi quantità di codice apparentemente identico.

var textboxes = new[] {txtbox_vendor, txtbox_vendorCity, txtbox_vendorState};
foreach (var textbox in textboxes)
{
    textbox.Enabled = false;
    textbox.Visible = false;
}

In questo modo puoi evitare la tentazione di risparmiare spazio posizionando più istruzioni su una singola riga (che in realtà è disapprovato).

    
risposta data 01.09.2016 - 22:39
fonte
0

Puoi ancora impostare tutte le proprietà con un solo valore e mantenere la regola di una regola per riga in questo modo:

txtbox_vendor.Visible = 
txtbox_vendor.Enabled =
txtbox_vendorCity.Visible = 
txtbox_vendorCity.Enabled =
txtbox_vendorState.Visible = 
txtbox_vendorState.Enabled = false;
    
risposta data 13.09.2016 - 14:21
fonte

Leggi altre domande sui tag