Developer Manual

Style

Rispettare delle linee guida che conferiscano al progetto una omogeneità di stile è molto importante in quanto:

In MIP si dvono rispettare le seguenti linee guida:

  1. Alcuni elementi vanno documentati obbligatoriamente:
    • classi (autore, cosa rappresenta)
    • metodi pubblici (cosa fa, cosa ritorna in output e cosa prende in input (con i range di validità))
    • l'intestazione dell'header deve avere nome, autore, data, breve descrizione
  2. Non si usano trattini "-" e trattini bassi "_" per separare le parole di un elemento, ma le maiuscole, ad esempio "dist_min" non va bene mentre "distMin" si. Stesso dicasi per i nomi di file. La separazione con la maiuscola va sempre fatta.
  3. I tipi iniziano con la lettera maiuscola (es: class Tipo), le variabili e i metodi con la lettera minuscola le variabili (es: int numRob) e le variabili e i metodi privati col trattino basso lettera minuscola (es: int _numRob):
  4. I file che contengono principalemnte la classe da cui prendono il nome vanno scritti con la lettera maiuscola (es: Serialization.cpp) gli altri con la minuscola (es: testMobileRob.cpp)
  5. Al posto di float e double va usato il tipo Decimal
  6. Cartelle che contengono solo i sorgenti della classe da cui prendono il nome iniziano con lettera maiuscola, cartelle che contengono cartelle o mix di sorgenti iniziano con la minuscola
  7. Ogni campo di una classe non deve mai essere usato (lettura e scrittura) esternamente in modo diretto, ma sempre attraverso metodi della classe che devono iniziare per get/set
  8. ogni algoritmo deve essere una classe implementata come una macchina a stati con un metodo di steping (running)
    • una classe di parametri (ossia input che tipicamente si mantengono costanti all'interno dell'esecuzione) la quale viene passata al costruttore
    • una classe di input che viene passata alla step dell'algoritmo e
    • una classe di output che viene ritornata dalla step
    • un enum che ne elenca gli stati
  9. non si usano variabili globali
  10. non si usano le printf e altre cose simili del C
  11. ogni classe deve avere almeno
    • costruttore di copia,
    • operatori di assegnazione = di confronto == e !=
    • distruttore oblligatorio se c'è allocazione dinamica
    • una "print()" della classe eseguita con gli stream
  12. non si usano vettori, ma solo vector (definit nella c++ STL)
  13. buon utilizzo dei vector:
    • il metodo size() fa ogni volta una scansione del vector quindi se lo si deve usare in for memorizzare la size prima del for in una variabile temporanea e usare quella nel for
  14. non utilizzare define di costanti, solo se indispensabile e in modo localizzato, usare gli enum
  15. impostare la tabulazione a 2 spazi e usarla per alineare il codice

Tasks

see the Task class

Algorithms

see the algorithms dir

Resources

see the Resource class

OsX Hints


Generated on Mon Feb 20 07:01:08 2017 for MIP by  doxygen 1.5.6