Ce tip de Coding Style folositi?

Ce stil de coding folositi (indiferent de limbaj)? [1] [2] [3] [4]. Eu folosesc [5] (e un subset al Kernel Normal Form FreeBSD), am scris un articol mai devreme legat de asta ca ma stresa un amic care foloseste camelCase in numirea variabilelor si a functiilor, pe care il foloseam si eu, si mi se pare cam stufos si intortocheat.

  1. https://en.wikipedia.org/wiki/Programming_style
  2. https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style
  3. https://www.kernel.org/doc/Documentation/CodingStyle
  4. https://en.wikipedia.org/wiki/Kernel_Normal_Form
  5. https://vox.space/blog/110/my-coding-style

care-i diferenta intre

// bad
if (expression) statement;

si

// acceptable
if (expression) return value;

Statements that can use curly-brace enclosed blocks should use them, even if there is only a single statement in the block, unless that statement is a return statement for a single value, which may be inlined:

Daca folosesti doar un return, e acceptabil.

Acestea sunt coding standards pe care le folosim pe proiect:

C# Coding Standards and Naming Conventions

Un subiect un pic mai avansat dar care mi se pare mai interesant:

Code smells and refactoring of that

2 Likes

eu intreb de ce-i gresit ai, sa spunem, un continue, sau un $foo = true si acceptabil daca ai un return $foo.

DPDV al functionalitatii nu este nimic gresit in tipul asta de coding, e gresit din punctul de vedere al lizibilitatii codului. Varianta 2 iti permite sa ai asa numitele "one line functions, care sunt utile pentru “gettere” in principal.

Dar iarasi, nu e vorba de gresit, e vorba de usurinta de citire a codului.

1 Like

IMHO fiecare ar trebui sa adere la un coding style al limbajului in care programeaza - evident cu mici deviatii (none are perfect) e.g.:

etc.

Un coding style personal - IMHO este bad practice si ceva à la NIH syndrome.

1 Like

Ce tip de Coding Style folositi?

Cel corect, evident! :smiley:

Dar acum serios, sunt de acord cu @dakull, adopți stilul folosit de comunitate.

Mult timp am urmat (mai mult sau mai puțin) stilul jQuery pentru JS și stilul WP pentru PHP, dar de ceva timp a început să mă enerveze spațierea între paranteze: if ( $foo ) { .... }, am început să pun acoladele în stilul k&r.

Când scriu PHP încerc să urmez PSR. La JS și CSS nu cred că urmez vreun stil anume.

Pai si nu e haotic pentru fiecare limbaj sa folosesti alt stil? Un proiect presupune cel putin 2 limbaje, in fiecare limbaj iti numesti variabilele diferit (ca sa nu mai zic de acolade diferite pentru fiecare limabj, doar pentru unicitate)?

$argList = array(); //php var barac_obama_este_presedinte = ''; //js InputVar = '' //ruby

Why?

Pei si nu e haotic pentru alti devs sa-ti invete stilul tau?

Stai un pic, despre ce vorbim aici?

  • Job? Atunci te conformezi cerintelor project managerului.
  • Proiecte Open Source? Tu esti project manager, tu decizi, ceilalti se conformeaza.
  • Proiecte personale (chestii care nu sunt Open Source, un proiect pentru vecinul de bloc, ceva pentru scoala, etc, poate incluzand freelancing, daca lucrezi solo)? Despre asta discutam. Care alti devs?

Hmmm… oare să fie un nou candidat pentru seria Holy War?

2 Likes

Dacă planul tău e să nu ai nici un contribuitor, da, tu ești project manager iar ceilalți se conformează. Altfel ar trebui să ai un oarecare standard…

Dacă scrii în Python și standardul comunității e indent cu patru spații, ce șanse ai avea dacă proiectul tău are indent cu trei spații?

Pai ai un standard, standard care e specificat intr-un fisier de genul STYLE.md in proiect, cei care vor sa contribuie il studiaza si se vor conforma. Sau nu, nimeni nu te obliga sa contribui, daca te deranjeaza sistemul, limbajul, omul, etc.

Cred ca lumea iti va folosi proiectul daca e util sau nu, nu cred ca se cramponeaza de spatii sau nu. Dar iarasi, in Open Source, tu esti project manager, tu decizi. Cu alegeri bune sau rele.

Ai tu un standard. Dar dacă al tău e (prea) diferit de cel al comunități, aș zice că e rețeta corectă pentru a nu avea succes :slight_smile:

1 Like

Comunitatea foarte rar are un standard (din ce stiam si eu C#, cum bine a zis si @adavidoaiei, are un standard mai unificat), in rest, fiecare lucreaza cum stie (nu vorbim de MySQL, Apache, Mongo, Rails, etc). Asta era si ideea initiala, ce facem pentru proiectele personale, cele in care nu te obliga nimeni sa lucrezi intr-un anumit mod. Proiectele care ar trebui sa te invete ceva, ce faci, lucrezi haotic pentru ca poti? Sau iti stabilesti un stil de programare si te tii de el (tre sa recunosc ca nici eu nu am un stil unificat pentru toate limbajele, dar ma straduiesc sa imbunatatesc).

Păi tocmai aici e chestia: nu lucrezi tot timpul la proiecte personale (sau dacă o faci, ești un norocos). Prin urmare, la proiectele personale vei folosi același stil folosit la proiectele… ne-personale.

Cel puțin eu așa fac…

Prin proiecte personale ma refeream la chestii putin “tangentiale” cu munca, adica freelancing, chestii pe care le faci pentru un prieten pentru ca te roaga sa-i implementezi o functie, etc, adica eu consider proiectele personale marea masa a proiectelor cuiva (sunt acele “chestii” care nu le consideri suficiente pentru a le arunca pe un git public, sunt “chestiile” pe care le faci in freelancing, sunt bucatile de cod pe care le scrii atunci cand inveti ceva, sunt “chestiile” care iti raman scrie dupa ce urmaresti un tutorial, etc.)

Deci exista o oarecare uniformitate, si nu folosesti chestii diferite la fiecare proiect, nu? De exemplu, la Discourse nu folosesti CamelCase si la Wordpress lowercase_underscore? Nu toata lumea foloseste mai multe limbaje, de acord, deci putem extrapola situatia la doua proiecte diferite.

Holy War indeed :smiley:

De ce totul trebuie sa fie un Holy War lately?

4 Likes

Sa-ti dea Dumnezeu sanatate pt link. O sa il tin pe post de biblie, peste vreo saptamana ma inunda studentii ca incepe practica si nu aveam nimic de genul structurat asa fain.

2 Likes