Slide dall'Università sulla gestione e documentazione del codice. Il Pdf esplora le regole di sintassi, le convenzioni di codifica e i componenti di un IDE, analizzando il diritto d'autore e le licenze software. La presentazione, adatta per l'Università in Informatica, tratta anche le modalità di concessione del codice eseguibile e sorgente, inclusi EULA e open source.
Mostra di più22 pagine


Visualizza gratis il Pdf completo
Registrati per accedere all’intero documento e trasformarlo con l’AI.
Tutti i progettisti di software adottano convenzioni di stile o linee guida per la scrittura del codice sorgente dei programmi. Le convenzioni di codifica non vanno confuse con le regole di sintassi del linguaggio usato. Le regole di sintassi vengono controllate dal compilatore e non possono essere violate altrimenti non verrà nemmeno generato il codice eseguibile. Le convenzioni di codifica invece sono stabilite e controllate dai programmatori. Il loro mancato rispetto di per sè non compromette la funzionalità o l'efficienza del codice generato, ma rende più difficile la lettura del codice da parte degli umani. Sarà quindi più difficile la manutenzione, la ricerca di errori, l'aggiornamento del codice, ecc.Esempi float pippo; int pluto pippo = 0,3 ; In queste righe di codice c++ sono violate due regole di sintassi int dividendo; int Divisore, RESTO, xZy; .. if (RESTO == 0) cout ("divisione senza resto") ; In queste righe non ci sono errori di sintassi ma sono violate diverse convenzioni di codifica comuni:Esempi di convenzioni comuni di codifica per C++
DEFINIZIONE: la naming convention è un insieme di regole per la scelta della sequenza di caratteri da utilizzare per gli identificatori di variabili, tipi, funzioni e tutte le altre entità nel codice sorgente e nella documentazione. Per questo è importante seguire poche - ma efficaci! - regole per la stesura del codice:
Tipi di denominazione: Gli sviluppatori e i programmatori hanno definito delle vere e proprie convenzioni (Case-Notation) da adottare per le entità all'interno del codice. Queste sono:
Esempi di Case Notation int sum; // nome semplice float degree_to_radiants; // nome composto string s; // la classe std: : string void do_something(); // il nome di una funzione int sum; nome semplice float degreeToRadiants; // nome composto void doSomething(); // il nome di una funzione / / Convenzione Pascal Case int Sum; nome semplice float DegreeToRadiants; // nome composto void DoSomething(); // il nome di una funzioneA space between parameters No space between the function name and parentheses between the parentheses and the parameter Curly brace { on the same line, after a space Spaces around operators Indentation 2 spaces function pow(x, n) { let result = 1; 12 A space after for/if/while ... for (let i = 0; i < n; i++) { result *= x; } A semicolon ; is mandatory return result; } A space between arguments An empty line between logical blocks let x = prompt ("x?", ""); let n = prompt("n?", ""); €> Lines are not very long if (n < 0) { alert(`Power ${n} is not supported, please enter a non-negative integer number'); } else { alert( pow(x, n) ); } } else { without a line break Spaces around a nested call
Esercizio: Correggere l'uso sbagliato del «Naming Convention» #include using namespace std; int a, b, c; void fn1(int x, int y) { a = x + y; Y void fn2(int input_a, int input_b) { b = input_a - input_b; int main( ) { int num1, num2; cout << "Enter the first number: "; cin >> num1; cout << "Enter the second number: "; cin >> num2; fn1(num1, num2) ; fn2(num1, num2) ; c = a * b; cout << "Result: " << c << endl; return 0; Y
Esercizio: Correggere l'uso sbagliato del «Camel Case» #include using namespace std; int badFunctionExample(int input_Value) { int some_variable = 5; int AnotherVariable = 10; int result = some_variable + AnotherVariable + input_Value; return result; } int main() { int inputNumber; cout << "Enter a number: "; cin >> inputNumber; int outputResult = badFunctionExample( inputNumber ) ; cout << "Result: " << outputResult << endl; return 0; }
Esercizio: Correggere l'uso sbagliato del «Snake Case» #include using namespace std; int Calculate_Sum(int FirstNumber, int SecondNumber) { int someNumber = 5; int AnotherNumber = 10; int Result = someNumber + AnotherNumber + FirstNumber + SecondNumber; return Result; } int main() { int input1, input2; cout << "Enter the first number: "; cin >> input1; cout << "Enter the second number: "; cin >> input2; int TotalResult = Calculate_Sum(input1, input2) ; cout << "Total Result: " << TotalResult << endl; return 0; }
Ambienti di sviluppo integrati (IDE = Integrated Development Environment) Anche se è possibile scrivere un programma utilizzando un comune editor di testo è sempre preferibile usare un IDE. Ciò facilita e rende più rapido lo sviluppo di codice. Un IDE di base comprende sempre:
Altri componenti che possono essere presenti in un IDE
Diritto d'autore e licenze software Nella UE l'unico strumento giuridico di protezione del software è il copyright, cioè il diritto d'autore. Non è prevista la brevettabilità del software. Uno sviluppatore di software può avere due esigenze:
Se si concede il solo codice eseguibile (gratuitamente o dietro compenso) si definisce un contratto d'uso, chiamato EULA (End User Licence Agreement), che l'utente deve accettare se vuole utilizzare il programma. La concessione del solo codice eseguibile è la modalità tradizionale e più diffusa di distribuzione dei programmi commerciali a pagamento. L'azienda o il programmatore non rende disponibile in questi casi il sorgente del proprio prodotto. Anche molti programmi freeware o shareware sono rilasciati solo come eseguibili. In alternativa esistono i cosiddetti programmi open source. In questi casi viene reso disponibile il codice sorgente del programma.
Quando si fornisce il codice sorgente di un programma si parla di Open Source. Lo scopo è quello di favorire il riutilizzo del codice vincolandolo però al rispetto di alcune regole stabilite da un'apposita licenza d'uso. In generale una licenza open source cosa prevede?
I principali tipi di licenze open source sono due: