with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau...

14
with style By Valentin Stanciu

Transcript of with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau...

Page 1: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

with style

By Valentin Stanciu

Page 2: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

“People have been known to achieve more as a result  of working with others than against them.”

Dr. Allan Fromme

Page 3: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

Comunicarea cu echipaTrebuie sa fii inteles de ceilaltiTrebuie sa ii intelegi pe ceilalti

Trebuie sa existe un set de reguli de comunicareS‐au creeat standarde de a scrie cod(=“Coding Standards”; abreviat CS)

Aceste standarde au rolul de a mentine codulconsistent, usor de citit si usor de intretinut

Page 4: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

Coding StandardsIdentare cu 4 spatii, fara tab (depinde de fiecare proiect)O instructiune pe linieNumele variabilelor locale sa contina doar litere miciCu separatorul de cuvinte ‘_’Constantele globale sa contina doar litere mariNume de variabile si functii care sa denote scopulFara variabile “chestia2” sau nume de functii “BagaMare”Fara constructii ‘smechere’ pe o singura linie ce combina mai multe instructiuni.Daca chiar sunt necesare, ele trebuie documentate.Exemplu negativ:for (int i=1, t=0; i<=A[0]; ++i) A[i] += (t = (A[i] -= B[i] + t) < 0) * 10; // A-=B pe nr mariExemplul de mai sus are si un mic bugMult mai multe detalii vezi [1]

Page 5: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

Coding Standards –

PHP

Example

Page 6: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

Mentine standardul!

Code Beautification:Aranjeaza codul sa fie usor de cititGNU Indent – C/C++ – [2]Abraxas CodeCheck – C/C++ ‐ analiza completa a codului [3]

In editoareVIM – ‘=‘ ‘=%’ ‘==‘ commands – poate fi configurat safoloseasca stilul utilizatorului sau sa foloseasca GNU IndentEMACS – CTRL+ALT+’\’ commandVisual Studio – on the fly indent + [Ctrl‐K, Ctrl‐F] command

Page 7: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

Coordonarea in echipa

Ce se intampla daca 2 oameni lucreaza la acelasi lucru in acelasi timp?Daca cineva gaseste o problema cum o raporteaza?Arhitectura proiectului?

Un proiect are nevoie de o metoda de versionare(Revision Control)In cazul in care se aduce o modificare nepotrivita sa se poata restabili o versiune functionabila cat mai usor

Page 8: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

SubversionSubversion [4] ‐ Prescurtat SVN – Sistem de Versionare“Subversion is meant to be a better CVS”Tine atat versiunile curente ale fisierelor cat si versiunile precedenteSistem Client  Server

Se poate integra cu apache (mod_dav_svn module)Poate fi configurat ca un server separat – svnserveServerul tine toate modificariile - repositoryul cu toata istoriaClientii iau o versiune, fac modificari pe ea, apoi adauga pe server nouaversiuneServerul tine toate modificarile ca un array de arbori unde fiecare index din array este o revizie

Revision 1 Revision 2 Revision 3 Revision 4 Revision 5

dir2dir1

file1 file2 file3

dir2dir1

file1 file2 file3

Revision 6

Page 9: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

Subversion ‐ features

Operatii atomiceO operatie intrerupta nu produce inconsistente

Ramuri de dezvoltare (branching)O ramura cu versiunea stabila a proiectuluiO ramura cu versiunea de dezvoltare si integrare de facilitatiProiectul include modificari aduse altui proiect (vendor branching)

Utilitar ce ajuta: PistonTags

Ex: Cand se lanseaza o noua versiune se creeaza un tag cu numarul ei

Page 10: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

Subversion – utilizare

Simplu de utilizatUtilizatorul vede un repository ca o structura clasicadirector/fisiere (serverul tine istoria)Windows ‐> TortoiseSVN [5]Debian Linux ‐> pachetul “subversion”

Creeaza o copie a unui repository in directorul curent:svn checkout http://hackers.devnet.ro/dav-svn/trunk

Fiecare modificare se face local, apoi se trimite la repository

Toate fisierele modificate ‘imbatranesc’ cu ultima versiuneDaca exista 2 modificari diferite aduse aceluiasi fisier se rezolva conflictele (overwrite, merge)

Page 11: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

TracWeb‐based software project management and bug trackerDocumentatie pentru proiect in format wikiMentine o evidenta a taskurilor de rezolvat (tickets) 

Features, bugsFiecare ticket are o descriere, o lista de discutii, un status

Are integrat un sistem de permisiuniInterfata cu SVN

SVN ExplorerSe pot vedea diferentele intre revizii

Tickete, revizii, documentatie intr‐un pachet unitar

Page 12: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

Trac

‐ Browser

Page 13: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

Trac –

Tickets

Page 14: with style...Nume de variabile si functii care sa denote scopul Fara variabile “chestia2” sau nume de functii “BagaMare” y Fara constructii ‘smechere’ pe o singura linie

Resurse Utile

1.

C++ Coding Standard –

http://www.possibility.com/Cpp/CppCodingStandard.html2.

Indent –

http://www.gnu.org/software/indent/3.

CodeCheck

http://www.abxsoft.com/codchk.htm4.

Subversion ‐

http://subversion.tigris.org/5.

TortoiseSVN

http://tortoisesvn.tigris.org/6.

Trac

http://trac.edgewall.org/