• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Release [C#]Csharp sintax viewer[C#]

System32

Utente Stellare
Autore del topic
2 Gennaio 2010
15.556
112
Miglior risposta
0
Salve, non avendo che fare ( come al solito ) ho pensato che potrebbe tornare utile creare un programma che evidenzia la sintassi del linguaggio C#, un po' come fa il compilatore della Microsoft, ma il mio è molto meglio ( non è vero ). Comunque, sono 367 fottute righe di codice ( mai scritte tante in vita mia ), ma vabbè, questa è la vita. Non c'è molto da dire, il programma evidenzia le keywords del linguaggio C# ( non tutte, solo alcune ) che si trovano all'interno di un array. Avevo pensato di inserire anche ( nello stesso programma ) la possibilità di evidenziare anche le keywords del VB.NET, però mi rompevo le palle :ragione: E quindi pubblico solo ed esclusivamente il progetto per le keywords del C#. In futuro magari aggiungerò delle nuove cose, ma state tranquilli che il programma più in la verrà ampliato, magari aggiungerò anche la possibilità di visualizzare come va usata una determinata istruzione, così come fa il compilatore della Microsoft.

Che dire...vi lascio con screen ( del primo Form ) e il codice, come al solito, e ovviamente non possono mancare download e scansione.

Source :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Download >
Perfavore, Entra oppure Registrati per vedere i Link!


Scansione >
Perfavore, Entra oppure Registrati per vedere i Link!


Screen >
2vkg6qp.png


Bye.
 
Riferimento: [C#]Csharp sintax viewer[C#]

Non hai mai scritto più di 367 righe?!
Io ti avevo che ti potevo fare io la grafica, infatti è orrenda.
Good work (per il resto) man.
 
Riferimento: [C#]Csharp sintax viewer[C#]

Complimenti System. ;)

Ps. Ho ripreso lo sviluppo di InfoPC.

Già siamo a 3000 istruzioni minimo.

:bye:
 
Riferimento: [C#]Csharp sintax viewer[C#]

Ci sono parecchie scelte opinabili:

1 - I controlli non hanno nome. Certo, hanno il nome di default, ma mettiti nell'ottica di chi deve leggere il tuo sorgente. Il codice deve essere tale da far capire la logica che ci sta dietro, anche se a spanne e nascondendo i dettagli (anzi, è meglio nascondere i dettagli implementativi a una lettura sperficiale). Come è possibile capire qual è il compito assegnato a un controllo senza andare a sfogliare il file di design per vedere la correlazione tra gli elementi dell'interfaccia e l'identificatore?

2 - Hai usato un'enormità di if. Inutile, prolisso e decisamente poco elegante. Potevi tranquillamente riordinare le parole chiave nell'array in modo che la proprietà SelectedIndex fosse coerente con l'indice della parola nell'array. A quel punto sarebbero bastate quattro righe di codice:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Per la cronaca, il controllo su SelectedIndex all'inizio della funzione è ben piazzato, ma anche se l'indice è minore di zero, TUTTI gli altri if vengono eseguito lo stesso. Io ci metterei un return; dopo il message box.

3 - Un discorso analogo vale per il gestore d'evento listBox1_SelectedIndexChanged. I primi 5 if verificano una condizione di uguaglianza e hanno il medesimo corpo. Si possono unire in un solo if:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

4 - La scelta di colorare il codice dopo l'evento TextChanged è buona, ma l'approccio usato è pessimo. Usare un timer? A seconda di qual è il valore del tick è più o meno frustrante, ma comunque rimane una soluzione che avrei scartato. Se non hai visto, il codice che ora è in Timer2 consta di ben due cicli, nidificati. Con l'aumentare delle parole da evidenziare e la lunghezza del testo prende sempre più tempo, e siccome il tempo impiegato aumenta almeno proporzionalmente ai dati, ti ritroverai a dover attendere 30 secondi per colorare un sorgente da 1000 righe. Il tutto ripetuto tante volte quante sono i tick del timer prima di essere fermato. La lentezza, in questo caso, è data dall'uso delle proprietà SelectedIndex, SelectedLength e SelectedColor che sono di loro natura poco performanti.

5 - Sempre in linea con il punto precedente, vorrei farti notare che ricolori TUTTO il testo della textbox ogni volta che un singolo carattere viene aggiunto. Questo è inutile. Sarebbe già meglio colorare solo la parte di testo visibile. O, ancora meglio, solo la linea di testo modificata. Ci sono alcune funzioni di RichTextBox che ti consentono di ottenere la riga corrente e l'indice del primo carattere della riga.
 
Riferimento: [C#]Csharp sintax viewer[C#]

Ci sono parecchie scelte opinabili:

1 - I controlli non hanno nome. Certo, hanno il nome di default, ma mettiti nell'ottica di chi deve leggere il tuo sorgente. Il codice deve essere tale da far capire la logica che ci sta dietro, anche se a spanne e nascondendo i dettagli (anzi, è meglio nascondere i dettagli implementativi a una lettura sperficiale). Come è possibile capire qual è il compito assegnato a un controllo senza andare a sfogliare il file di design per vedere la correlazione tra gli elementi dell'interfaccia e l'identificatore?

2 - Hai usato un'enormità di if. Inutile, prolisso e decisamente poco elegante. Potevi tranquillamente riordinare le parole chiave nell'array in modo che la proprietà SelectedIndex fosse coerente con l'indice della parola nell'array. A quel punto sarebbero bastate quattro righe di codice:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Per la cronaca, il controllo su SelectedIndex all'inizio della funzione è ben piazzato, ma anche se l'indice è minore di zero, TUTTI gli altri if vengono eseguito lo stesso. Io ci metterei un return; dopo il message box.

3 - Un discorso analogo vale per il gestore d'evento listBox1_SelectedIndexChanged. I primi 5 if verificano una condizione di uguaglianza e hanno il medesimo corpo. Si possono unire in un solo if:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

4 - La scelta di colorare il codice dopo l'evento TextChanged è buona, ma l'approccio usato è pessimo. Usare un timer? A seconda di qual è il valore del tick è più o meno frustrante, ma comunque rimane una soluzione che avrei scartato. Se non hai visto, il codice che ora è in Timer2 consta di ben due cicli, nidificati. Con l'aumentare delle parole da evidenziare e la lunghezza del testo prende sempre più tempo, e siccome il tempo impiegato aumenta almeno proporzionalmente ai dati, ti ritroverai a dover attendere 30 secondi per colorare un sorgente da 1000 righe. Il tutto ripetuto tante volte quante sono i tick del timer prima di essere fermato. La lentezza, in questo caso, è data dall'uso delle proprietà SelectedIndex, SelectedLength e SelectedColor che sono di loro natura poco performanti.

5 - Sempre in linea con il punto precedente, vorrei farti notare che ricolori TUTTO il testo della textbox ogni volta che un singolo carattere viene aggiunto. Questo è inutile. Sarebbe già meglio colorare solo la parte di testo visibile. O, ancora meglio, solo la linea di testo modificata. Ci sono alcune funzioni di RichTextBox che ti consentono di ottenere la riga corrente e l'indice del primo carattere della riga.

Grazie per il commento e quindi per le dritte, ma sono agli inizi, non credo sia poi così grave, no ?
 
Riferimento: [C#]Csharp sintax viewer[C#]

Dipende da cosa intendi fare della tua conoscenza. Se la vuoi sviluppare e proseguire, cambia il tuo stile il prima possibile, migliora, leggi, partecipa a qualche altra community o forum di programmazione, possibilmente di livello più alto.
Se invece è solo uno svago... migliora comunque XD
Come dice il nostro admin Piero Tofy, "fai quello che ti piace, e fallo bene".