26th Novembre 2008

Crap Code

Crap code è un termine volgare con cui gli anglofoni chiamano il codice scritto male. In questo articolo l’autore spiega cos’è - secondo lui - il crap code, chiedendo in chiusura anche il parere dei lettori. Quella che segue è la mia idea di crap code, tenendo presente che il concetto di codice buono è soggettivo. Ma fino ad un certo punto…

  1. Le infinite catene di if/else annidati sono tra le cose che più irritano il mio senso estetico. Una moltitudine di rami decisionali, uno dentro l’altro, che formano un groviglio inestricabile per la comprensione e sono impossibili da modificare.
  2. I metodi, le funzioni o le procedure più lunghi di 20 righe, inclusi i commenti, rendono difficile seguirne il filo logico, spesso sono poco coesi (fanno troppe cose) e di conseguenza scarsamente modificabili.
  3. Il codice non commentato è un danno per gli altri, ma anche per sé. Anche se fosse codice ben scritto, una descrizione di ciò che fa dà subito un’idea sommaria che ne aiuta la comprensione più profonda. Lo stesso autore, a distanza di tempo, non può ricordarsi le idee e i ragionamenti che hanno prodotto quel codice: un commento è un messaggio d’aiuto spedito a sé stessi nel futuro.
  4. L’utilizzo sbagliato o innaturale delle strutture di controllo, per cercare la creatività a tutti i costi. Usare gli idiomi nel modo consueto facilita agli altri la lettura del proprio codice, così che non debbano spremersi le meningi per capire che quel ciclo while scandisce soltanto gli elementi di una lista dal primo all’ultimo, o che quel try/catch non gestisce un errore, ma il flusso dell’applicazione.
  5. L’abuso di flag, che conduce spesso alle catene di if/else di cui sopra e ad espressioni logiche complesse quanto inutili.
  6. Le query SQL cablate nel codice e la scansione manuale dei risultati, magari utilizzando indici posizionali (0, 1, 2, …) invece dei nomi degli attributi. Perché non usare un ORM?

L’articolo inoltre enuncia una verità inconfutabile: il crap code è sempre quello degli altri. Voi che ne pensate?

posted in programmazione | 0 Comments

22nd Febbraio 2008

Programmare in Python/Qt - parte 3

Nella seconda parte abbiamo costruito un editor per poter immettere e modificare una sequenza di valori, utilizzando il framework model/view fornito dalle Qt4. In questo articolo sfrutteremo le funzioni definite nel modello applicativo per effettuare calcoli statistici sulle sequenze e visualizzarne i risultati sotto forma di tabella.

Read the rest of this entry »

posted in python, programmazione, qt | 0 Comments

21st Dicembre 2007

Programmare in Python/Qt - parte 2

Nella prima parte abbiamo definito un modello contenente la logica per una semplice calcolatrice statistica. Il modello consiste in un contenitore di valori (la lista nativa del Python) e una serie di funzioni che calcolano alcuni indici statistici, come il valore medio e la deviazione standard. In questo articolo getteremo le basi per costruire l’interfaccia utente.

Read the rest of this entry »

posted in python, programmazione, qt | 7 Comments

23rd Novembre 2007

Programmare in Python/Qt - parte 1

Il Python è un linguaggio di scripting moderno ed evoluto, dotato di librerie standard molto complete e numerosissime librerie di terze parti per fare praticamente di tutto. In virtù di ciò è possibile sviluppare applicazioni Python molto rapidamente e questo lo rende un linguaggio ideale, fra le altre cose, per la creazione di prototipi. Le Qt sono librerie C++ per la creazione di interfacce grafiche. Sono rilasciate con licenza GPL dalla Trolltech e sono le fondamenta del desktop manager KDE. Sono disponibili dei binding delle Qt per Python, chiamati PyQt, grazie ai quali è possibile usare Python e Qt insieme. Python e Qt sono disponibili su vari sistemi, inclusi GNU/Linux e Windows, e rappresentano perciò una vera soluzione multipiattaforma.

Per esplorare le potenzialità del binomio Python/Qt andremo a sviluppare un’applicazione didattica, una semplice calcolatrice statistica per calcolare gli errori sulle misurazioni di grandezze fisiche. Dato un insieme di valori, che rappresentano le misurazioni di una data grandezza, la nostra calcolatrice ci fornirà informazioni come media, deviazione standard, errore medio, ecc. Niente di trascendentale, ma abbastanza per usare Python e Qt in modo non banale. Nel prosieguo daremo per scontata una conoscenza dei concetti base sia del Python che delle Qt, che dispongono di ottima documentazione introduttiva qui e qui.

Read the rest of this entry »

posted in python, programmazione, qt | 0 Comments

24th Maggio 2007

Programmare la GP2X - parte 2

La volta scorsa avevamo scomposto la semplice simulazione della pallina che rimbalza in due classi principali, Ambiente e Corpo, che interagivano fra loro. Adesso faremo un po’ di refactoring e quindi inizieremo a trarre un po’ di vantaggi dal design object oriented.

Read the rest of this entry »

posted in programmazione, c++, sdl, gp2x | 1 Comment

18th Maggio 2007

Programmare la GP2X - parte 1

La GP2X è una splendida console portatile basata su standard aperti, in particolare GNU/Linux. Su gp2xdev.net è iniziata un’ottima serie di articoli sulla programmazione della GP2X in C con le librerie SDL. Nella lezione 1 vengono introdotti i rudimenti della programmazione SDL, corredati da un esempio volutamente semplice con la classica pallina che rimbalza ai quattro lati dello schermo. Raccogliendo l’invito degli autori a modificare i sorgenti e a sperimentare, ho voluto aggiungere un po’ di struttura individuando ed implementando alcune classi. Ho sfruttato così l’occasione anche per studiare un po’ di C++, provenendo io dal Java. Ovviamente una struttura del genere è superflua per un esercizio così semplice, ma diventa indispensabile con progetti appena più ambiziosi, o anche soltanto per estendere un po’ le funzionalità previste inizialmente dalla simulazione. Per quanto concerne l’installazione degli strumenti di sviluppo rimando alla lezione 0 della serie.

Read the rest of this entry »

posted in programmazione, c++, sdl, gp2x | 4 Comments

4th Febbraio 2007

Programmare OpenOffice in Python

OpenOffice permette la programmazione di semplici macro per automatizzare compiti ripetitivi fino ad arrivare allo sviluppo di componenti complessi; tutto questo con i linguaggi più disparati, dall’OOoBasic (linguaggio che ricorda il VBA di Office) a Java e C++, o con linguaggi di scripting come Python e JavaScript. Vediamo come realizzare in Python una semplice macro per Writer che evidenzi in grassetto tutte le occorrenze di una parola selezionata dall’utente nel testo.

Read the rest of this entry »

posted in python, openoffice, programmazione | 3 Comments