Organizzazione del codice di una singola pagina bene con Notepad ++

-2

Ho un file c # che conterrà, molto probabilmente più di 10.000 righe di codice. Vorrei suddividere questo file in segmenti a schede, in modo da poter organizzare ciascun metodo in una determinata scheda e etichettare la scheda in modo simile: configurazione iniziale, funzioni di supporto, logica di esecuzione, strutture di elenco, variabili globali, ecc.

Se stavo usando PHP avrei file separati e uso include (); per includere i file separati. Cosa si può fare, seguendo lo stesso stile, con c #?

    
posta Hudson 16.02.2012 - 23:23
fonte

5 risposte

10

Innanzitutto, dal momento che stai parlando di C # e Notepad ++, hai considerato Visual C # 2010 Express ? È gratuito ed è molto più potente per C #, specialmente quando si tratta di visualizzare il codice sorgente in altre forme (come i diagrammi delle classi) o di refactoring.

In secondo luogo, ci sono due possibili casi in cui il file C # ha 10.000+ LOC:

  • O c'è qualcosa di sbagliato in questo, cioè il codice manca di architettura e, ad esempio, è stato scritto in modo procedurale, con 10.000+ LOC in un unico metodo con un sacco di% codice%. In questo caso, devi creare l'architettura, che ridefinisce il codice sorgente in modo che corrisponda alla tua architettura.

  • Oppure il file contiene solo dozzine di classi, combinate in un singolo file per un motivo sconosciuto. In tal caso, puoi separarli inserendo una classe per file nello stesso progetto . Se si mantiene lo spazio dei nomi lo stesso, funzionerà magicamente (se non ci sono classi all'interno di altre classi).

  • Inoltre, puoi separare i membri della classe in diversi file usando classi parziali .

In terzo luogo, se non vuoi rifattorizzare il codice e non puoi dividerlo in più file, una soluzione temporanea sarebbe quella di aggiungere goto di blocchi per poter comprimere il tuo codice non lavorare al momento.

    
risposta data 16.02.2012 - 23:40
fonte
13

Stai guardando nel modo sbagliato.

Il tuo codice deve essere refactored dall'essere una grande palla di fango a qualcosa con un design adeguato.

Non devi solo pensare a quali "schede" hanno il codice. Devi pensare a quali classi contengono quali metodi, che eseguono un compito "orientato agli oggetti".

Certo, le unità parziali C # potrebbero esserti di aiuto. Ma ti stai avvicinando a questo modo sbagliato.

Impara a codificare e migliora il tuo codice e impara a rifattorizzare e riscrivere il tuo codice. Sicuramente hai un'enorme unità di linea a 10K e deve essere suddivisa in unità separate. Si chiama "migliorando il tuo codice" o "refactoring".

    
risposta data 17.02.2012 - 00:33
fonte
3

C # consente le classi parziali , che ti consentono dividere una definizione di classe su più file fisici, esattamente come si potrebbe fare in PHP. Che sia o meno un'idea buona è una domanda diversa ...

    
risposta data 16.02.2012 - 23:33
fonte
0

Bene, nel blocco note ++ potresti arrotolare la struttura se metti parentesi graffe o un preprocessore #ifdef attorno alle varie sezioni. Questo è un elenco a schede, ma si muoverà attorno

Questo è un codice extra non funzionale puramente a fini di leggibilità, il che è una cattiva idea in generale.

Altrimenti potresti mordere il proiettile e dividere il tuo file enorme.

    
risposta data 16.02.2012 - 23:49
fonte
0

Una grande classe è generalmente un odore di codice che indica che la classe sta probabilmente tentando di assumersi la responsabilità di fare troppe cose. Se hai mai sperato di scrivere un buon codice SOLID , allora devi iniziare a pensare alla tua classe come essendo un tipo a un solo scopo come per il principio di singola responsabilità - alias la prima iniziale del " acronimo SOLID .

Ecco un altro principio che potresti trovare utile. ASCIUGA o Non ripetere te stesso . È stata la mia esperienza che quando si hanno classi molto gonfiate con più di poche centinaia di righe di codice, è molto probabile che si abbia molta ripetizione all'interno del codice. Questo è solitamente il risultato della codifica Cut-And-Paste che spesso si verifica quando gli sviluppatori hanno fretta di hackerare insieme qualcosa che funziona, con poca attenzione al design e alla manutenzione futura del codice.

Le classi numerose sono spesso indicatori di un ampio accumulo di debito tecnico che sarà probabilmente molto costoso da mantenere e difficile da gestire cambiare.

Quindi, con tutti questi problemi che ho bombardato con te, cosa puoi fare al riguardo? Prima di tutto, esaminare i modi per riorganizzare il codice è un compito ammirevole, ma l'utilizzo di trucchi IDE come tabulazioni, regioni o qualcos'altro per nascondere il caos non ti aiuterà a risolvere il tuo problema e molto probabilmente finirà per rendere il tuo situazione peggiore. Ti consiglio invece di consultare il refactoring del tuo codice.

  • Rompi i tuoi metodi lunghi in una raccolta di quelli più piccoli.
  • Utilizza questi metodi più piccoli per aiutarti a rimuovere la duplicazione.
  • Identifica ciò che la classe intende fare e sposta tutti quei metodi che non fanno ciò che la classe intende in altre classi.
  • Sposta le tue nuove classi in nuovi file sorgente, e questo ti darà tutti i benefici che speri di ottenere dai trucchi IDE che ho menzionato prima, oltre a rendere più facile per un intero team lavorare sullo stesso codice base mentre si riduce al minimo il numero di fusioni a 3 vie è probabile che si incontrino se si lascia tutto in un unico file.

Mantenere molte piccole classi nei propri file consentirebbe anche di aggiungere funzionalità attraverso "include" (o usando le istruzioni in C #) esattamente nello stesso modo in cui verrebbero usate in altre lingue.

    
risposta data 17.02.2012 - 03:28
fonte

Leggi altre domande sui tag