maggio 2008 - Posts

Ho letto il post di Corrado sul rilascio di Microsoft Source Analysis da parte di Microsoft. Ho provato a installarlo ed effettuare l'analisi di una applicazione Windows Form che devo completare.
Uno strumento di questo tipo è estremamente utile se si vuole realizzare codice pulito, documentato e facile da mantenere. Volevo però sottolineare alcune questioni indicandovi i controlli che ho disabilitato. Ricordo che per modificare le impostazioni dello strumento si deve cliccare con il tasto destro sul progetto nel Solution Explorer e selezionare la voce "Source Analysis Settings".

2008-05-24_145703


Vi elenco i controlli che ho disabilitato e se pensate che ho commesso uno sbaglio segnalatemelo:

  • SA1101 : PrefixLocalCallsWithThis
    Mi sembra molto scomodo anteporre la parola chiave this per accedere a qualsiasi membro (compresi i metodi) della classe. Io mi limito a utilizzarla solamente quando ci sono delle ambiguità nella risoluzione dei nomi, cosa che faccio volutamente nel costrutture della classe.
  • Documentation Rules
    Sono pienamente d'accordo sul fatto che i commenti sono fondamentali per scrivere un codice manutenibile nel tempo. Due sono i punti di vista cioè quello dello sviluppatore di una libreria e quello dello sviluppatore di una applicazione. Il secondo necessariamente utilizzerà diverse librerie per la realizzazione della logica applicativa e il fatto che queste siano documentate è un enorme vantaggio grazie soprattutto al supporto di Visual Studio nel mostrare la descrizione dei membri tramite Intellisense. Quindi lo sviluppatore di una libreria DEVE documentare il suo codice e quindi DEVE attivare questo controllo in Source Analysis. Quello che mi chiedo è se la stessa cosa debba farla lo sviluppatore di una applicazione. Purtroppo l'aggiunta di tag xml prima di un metodo o un membro a mio parere riduce molto la leggibilità del codice a scapito ovviamente della manutenibilità (in futuro, tramite il commento, si capirebbe al volo lo scopo del codice scritto). In genere personalmente preferisco commentare solamente quei metodi che ritengo "complessi" nel senso di non immediata comprensione (anche se ciò può essere sintomo di cattiva progettazione). Mi sembra di aver letto in passato diversi dibattiti sul tema commenti, ma non è mio scopo riaccenderli. Morale della favola io attiverei le Documentation Rules solamente se devo sviluppare una libreria. Mi rendo conto cmq di non aver mai sviluppato una applicazione grande e forse ho una visione limitata del concetto di manutenibilità.
  • SA1300 : ElementMustBeginWithUpperCaseLetter
    Ho disabilitato questo controllo semplicemente perchè non sono abituato a scrivere i metodi con la lettera iniziale maiuscola, inoltre i gestori di evento generati da Visual Studio aggiungono al nome del controllo (con lettera minuscola) il nome dell'evento e quindi non potrei sfruttare la utilissima funzionalità che con un doppio click viene generato automaticamente l'evento essendo costretto a scrivere manualmente il nome del metodo. Forse devo uniformarmi a questa regola ? In effetti è utilizzata sempre nell'implementazione della Base Class Library !
  • SA1305 : FieldNamesMustNotUseHungarianNotation
    Lo strumento controlla se è stata utilizzata nei nomi la notazione ungherese. Viene visualizzato un errore se il prefisso utilizzato non è presente in una lista modificabile nelle impostazioni.
    Direte: perfetto ! Il problema è c'è un vincolo sulla lunghezza del prefisso pari a 2 e quindi non è possibile utilizzare prefissi come lbl, btn, txt che io utilizzo frequentemente nelle applicazioni Windows Form.
    Sono quindi stato costretto a disabilitare questo controllo.

    2008-05-24_152151
  • Analyze designer files
    Ho disattivato i controlli sui file generati dal designer perchè venivano segnalati errori che ovviamente non è possibile fissare. Un esempio è il designer delle Windows Form che aggiunge i membri privati che rappresentano i controlli della form in fondo alla classe (quindi dopo i metodi) che non dovrebbe essere fatto secondo la regola SA1201 di Source Analysis.

    2008-05-24_152436
  • SA1200 : UsingDirectivesMustBePlacedWithinNamespace
    Questa regola consiglia allo sviluppatore di inserire le direttive using all'interno della dichiarazione del namespace e non all'inizio come viene fatto generalmente. Sapete perchè ?
Posted by Angella Andrea
Filed under:

Ho appena inserito nel mio laboratorio online una semplicissima applicazione XNA che mostra come è possibile gestire i font con XNA.

Ecco il link per il download: XNA Testo Rotante

Posted by Angella Andrea
Filed under: ,

Mi sono imbattuto in un problema nell'utilizzo del tag link all'interno di pagine master annidate. Ho fatto diverse prove e sono giunto alla conclusione che probabilmente è un bug nell'implementazione di ASP.NET.
Ho scritto un post nel forum Link a fogli di stile in pagine master .
Mi piacerebbe sentire i vostri commenti.

Posted by Angella Andrea
Filed under:

Ciao a tutti
non molti di voi mi conoscono ma è un pò di tempo che partecipo attivamente alla nostra community. Sono consapevole che il modo migliore per confrontarsi, conoscersi e fare amicizia sia trascorrere una piacevole serata tutti insieme al ristorante. Purtroppo la maggior parte di queste serate, per ovvi motivi, viene organizzata nella zona di Milano e purtroppo non avendo una macchina tutta mia (almeno per ora) mi risulta difficile riuscire a partecipare. Per questo motivo vorrei proporre una cena tutti insieme a "La Spezia" che a mio parere sembra un punto di incontro più accessibile.

Il ristorante che ho scelto ha 30 anni di attività e conosco i proprietari da sempre anche se è molto che non mi vedono. Ho sempre mangiato molto bene. Il posto è specializzato in antipasti, primi e secondi di mare, e pure io che non sono mai stato un amante del pesce ho sempre mangiato benissimo. I miei piatti preferiti sono gli "Gnocchi ai quattro formaggi" e i "Pansotti in salsa di noce".

Si chiama "Trattoria - La Nuova Spezia" e questo è il loro sito web: http://www.lanuovaspezia.com/ 
Qui trovate la sua posizione geografica.

Con questo post vorrei riuscire a capire se la cosa si può fare, quanti di voi sarebbero disponibili. Immagino che il venerdì sia il giorno più adatto. Per la data comunque non ci sono problemi e possiamo fissare un qualsiasi giorno. Per quanto mi riguarda gli unici giorni in cui non sarei disponibile sono quelli a cavallo del 9 Giugno in cui avrò un esame e un breve corso.

Data suggerita: Venerdì 6 Giugno

Per iscriversi: postate sul forum

Posted by Angella Andrea
Filed under:

Area di riferimento

- Implementing interoperability, reflection, and mailing functionality in a .NET Framework application
    - Send electronic mail to a Simple Mail Transfer Protocol (SMTP) server for delivery from a .NET Framework application. 
        - May include but is not limited to: 
            - MailMessage class; MailAddress class and MailAddressCollection class;
            - SmtpClient class, SmtpPermission class, and SmtpPermissionAttribute class;
            - Attachment class, AttachmentBase class, and AttachmentCollection class;
            - SmtpException class, SmtpFailedReceipientException class, and SmtpFailedReceipientsException class;
            - SendCompletedEventHandler delegate; LinkedResource class and LinkedResourceCollection class; 
            - AlternateView class and AlternateViewCollection class


.NET Mail API

L'utilizzo delle API per l'invio di messaggi di posta elettronica è molto semplice.
Potete scaricare una semplice soluzione di esempio al seguente indirizzo: http://www.angellaa.it/lab/dettagli-soluzione.aspx?id=14

I passi da seguire sono i seguenti:

  • Costruire un' istanza della classe MailMessage che rappresenta un messaggio specificando indirizzo sorgente, indirizzi destinatari, oggetto, corpo, priorità ed eventuali file allegati.
  • Costruire un'istanza della classe SmtpClient specificando, se necessario, le credenziali di accesso al server di posta
  • Chiamare il metodo Send o SendAsync della classe SmtpClient rispettivamente per inviare il messaggio in modo sincrono o in modo asincrono
  • Gestire opportunamente gli errori gestendo le eccezioni SmtpException, SmtpFailedReceipientException e SmtpFailedReceipientsException.

Vi segnalo che è stata aggiornata la preparation guide per l'esame 70-536 che ora si chiama genericamente "Microsoft .NET Framework, Application Development Foundation".

Sostanzialmente non ha subito grandi cambiamenti se non che invece di specificare esattamente gli argomenti viene dato un elenco preceduto da "May include but is not limited to: ".

Buon lavoro.

Posted by Angella Andrea

Ho da poco realizzato la sezione "Laboratorio" nel mio sito web personale. Utilizzerò quello spazio per caricare semplici soluzioni realizzate allo scopo di prendere confidenza con diverse tecnologie.
Potete lasciare commenti anonimi e scaricare tutto il codice che volete. Non ho associato alcun tipo di licenza ai miei contenuti.

Oggi ho realizzato una semplicissima soluzione in XNA 2.0 per illustrare come gestire texture 2D e tastiera in questo fantastico framework creato da Microsoft.

Potete trovare i sorgenti al seguente indirizzo: http://www.angellaa.it/lab/dettagli-soluzione.aspx?id=15

Posted by Angella Andrea
Filed under: ,