|
From: Francesco B. <jx...@ti...> - 2002-04-06 10:23:10
|
----- Original Message -----
From: "Federico Soldani" <sol...@te...>
To: "Dlab Mailing List" <dla...@li...>
Sent: Friday, April 05, 2002 6:25 PM
Subject: [Dlab-devel] Roadmap (regole di sintassi)...
> Nella directory DLab è stato inserito un file (ROADMAP.doc) in cui sono
> state scritte le regole generali che "tutti" noi dobbiamo seguire nella
> stesura del codice.
>
> Siete vivamente pregati di leggerlo e di impararlo a memoria!!!
>
> Si accettano suggerimenti e critiche costruttive (anche inviti a cena...)
ad
> esclusione di commenti da parte di Alexio :)
>
> P.S.
> Per modifiche fare riferimento a Daniela e Federico.
>
> Ciao
Dunque, mi son letto il doc, avrei qualche appunto da fare. Per quanto
riguarda le funzioni, secondo me sarebbe opportuno farle iniziare *sempre ed
in ogni caso* da caratteri lowercase, per conformità con tutte le altre
funzioni, ma anche perchè credo che sia più comprendibile leggere prima
quello che fa una funzione piuttosto che su cosa lo fa: in pratica io al
posto di "SpriteInit(...)" scriverei "initSprite(...)". Poi, come si
dice...quistion de gusti ;-)
Per i famosi include, c'è qualcosa che non mi torna. Riporto direttamente le
vostre parole:
Tutti gli include vanno messi nel file *.c a differenza di quelli che
servono per compilare il file header.
??? Dunque, intanto a me non risulta che il file header sia da compilare: il
file header *deve* contenere *solo* dichiarazioni di funzioni, strutture,
macro, variabili globali (poche possibilmente) e via dicendo, ma *nessun
tipo di implementazione*. Il file header serve solo ed esclusivamente per
permettere ai file *.c che lo includono di sapere come è fatta una certa
funzione, una struttura ecc... Se poi avete usato il termine "compilare"
impropriamente, quello è un altro discorso ;-) In generale, comunque, la
regola da seguire quando si fa un modulo è la seguente:
- si decide quali sono le strutture, le funzioni ecc... che faranno parte
del modulo, e le si dichiarano in un file header del tipo "modulo.h".
- il codice andrà poi inserito tutto in un file di implementazione del tipo
"modulo.c", in cui ovviamente si dovrà includere il precedente header.
Un esempio pratico:
/* file modulo.h */
#ifndef MODULO_H
#define MODULO_H
#include <stdio.h>
#define MACRO 480
typedef struct
{
int iVal;
char chVal;
} Pippo;
void foo(int a, Pippo b);
#endif // MODULO_H
/* file modulo.c */
#include "modulo.h"
void foo(int a, Pippo b)
{
...
}
Ancora sugli include:
Se è possibile, evitare di includere direttamente il modulo "SDL.h" e
includere i moduli specifici, ad esempio "SDL_keyboard.h".
Non so se sia vero che usare un include specifico piuttosto che uno generico
in ogni file di implementazione porti a diminuire considerevolmente il tempo
di compilazione, in ogni caso penso che sarebbe utile usare questa tecnica
specificando anche le funzioni che vengono utilizzate nell'implementazione
successiva, ad esempio:
#include "SDL_events.h" /* SDL_PollEvent
* SDL_WaitEvent
*/
#include "SDL_audio.h" /* SDL_FreeWAV */
Un'ultima cosa: quando qualcuno committa un file che contiene degli errori,
NON DEVE METTERLO NELLA DIRECTORY PRINCIPALE!!!! e soprattutto non deve
modificare il makefile in modo che anche quel file venga compilato e linkato
con gli altri, altrimenti non funziona niente. Esiste una cartella apposta,
chiamata "Test", in cui vanno messi tutti i file ancora in versione
provvisoria.
Commenti, suggerimenti, insulti ecc... a quanto sopra riportato sono
benvenuti (un pò meno gli insulti, soprattuto se riguardano la mamma...
sennò poi si fanno i conti ;-)
Ciao,
Cecco
|