Forum » Programiranje » Dobre programerske prakse
Dobre programerske prakse
GummyBear ::
Do sedaj sem delal samo v manjših firmah, kjer je eden lead developer in ima pod sabo max 3 "support" developerje. Povsod sem opazil, da nimajo uveljavljenih nekih "dobrih praks". Vedno je šlo samo, da bo spletno mesto / aplikacija čim prej izdelana, da bo čim prej zaslužek. Nikjer pa se ni gledalo na kakovost kode - zasledil sem primere, kjer se je copy-pastalo in na koncu je bil rezultat programska koda združena iz treh podobnih mest, vmes zakomentirano, kar se ni potrebovalo, ali pa zakomentirani deli kode, ki "v prvo" niso delovali in je bilo treba spisati drugače. Poleg tega je bila koda zelo redko opremljena s kakšnimi komentarji. Kakšne pripadajoče dokumentacije nisem nikjer zasledil. Rezultat je potem to, da dobiš junior programerja, ki ima za sabo kar nekaj (zelo prepričljivih!) lastnih projektov, ampak ko vidi takšno kodo, je praktično neuporaben - napreduje zelo počasi in cela firma je nezadovoljna/razočarana.
Kako programirate pri vas? Imate uveljavljene kakšne smernice, se držite dobre prakse? Ali samo mečete kodo skupaj, toliko da se rešitev čim prej proda stranki?
Kako programirate pri vas? Imate uveljavljene kakšne smernice, se držite dobre prakse? Ali samo mečete kodo skupaj, toliko da se rešitev čim prej proda stranki?
Utk ::
ko vidi takšno kodo, je praktično neuporaben
Jah...če bi bil tak maher, bi se znašel tudi tu.
zasledil sem primere, kjer se je copy-pastalo in na koncu je bil rezultat programska koda združena iz treh podobnih mest, vmes zakomentirano, kar se ni potrebovalo, ali pa zakomentirani deli kode, ki "v prvo" niso delovali in je bilo treba spisati drugače.
Kaj je pa s tem narobe?
Imate uveljavljene kakšne smernice, se držite dobre prakse?
V malih firmah je to odvisno od vsakega posameznika. Ti se lahko držiš, sodelavec se pa ne bo, in nekje se bosta vseeno združila, v tretjem projektu, če ne v prvem.
Ali samo mečete kodo skupaj, toliko da se rešitev čim prej proda stranki?
Ne. Poskušaš naredit tako, da bo uporabno še kje za koga, ampak to samo pomeni, da bo prišlo do "primere, kjer se je copy-pastalo in na koncu je bil rezultat programska koda združena iz treh podobnih mest, vmes zakomentirano, kar se ni potrebovalo, ali pa zakomentirani deli kode, ki "v prvo" niso delovali in je bilo treba spisati drugače."
user4683 ::
ko vidi takšno kodo, je praktično neuporaben
Jah...če bi bil tak maher, bi se znašel tudi tu.
True :)
zasledil sem primere, kjer se je copy-pastalo in na koncu je bil rezultat programska koda združena iz treh podobnih mest, vmes zakomentirano, kar se ni potrebovalo, ali pa zakomentirani deli kode, ki "v prvo" niso delovali in je bilo treba spisati drugače.
Kaj je pa s tem narobe?
Komentarji so namenjeni komentiranju. Neka stara koda, za katero noben ne ve zakaj tocno zakaj je tam, verjetno ni komentar.
Jure14 ::
Komentarji so namenjeni komentiranju. Neka stara koda, za katero noben ne ve zakaj tocno zakaj je tam, verjetno ni komentar.
Jaz dostikrat kakšno staro kodo zakomentiram, v smislu "to je bilo prej, pa ne dela prav" ali "tako je bilo prej, zdaj pa je zakonodaja drugačna" ali "to je bilo prej, zdaj pa tega ne rabimo več".
Ponavadi zraven še ena vrstica z datumom odstranitve in zelo na kratko razlog.
Irbis ::
Komentarji so namenjeni komentiranju. Neka stara koda, za katero noben ne ve zakaj tocno zakaj je tam, verjetno ni komentar.
Jaz dostikrat kakšno staro kodo zakomentiram, v smislu "to je bilo prej, pa ne dela prav" ali "tako je bilo prej, zdaj pa je zakonodaja drugačna" ali "to je bilo prej, zdaj pa tega ne rabimo več".
Ponavadi zraven še ena vrstica z datumom odstranitve in zelo na kratko razlog.
Ali pa še: tole je bilo videti kot dobra ideja, ampak se v praksi ni obneslo. Da ne preizkušaš iste ideje potem večkrat.
user4683 ::
Ja, to potem ni vec zgolj zakomentirana koda, ampak dejansko postane nek uporaben komentar (s kodo).
V praksi sem veckrat videl zgolj zakomentirane odseke kode brez dodane razlage, pa sem videl ze ogromno kode. Na sreco se veliko firm zapleza, ko jim one-man-band app preraste v 10+ ljudi in jih zacne osnovna zgresena arhitektura tako bremzati, da jim lahko ogromno racunas za svetovanje
Povsem odvisno od situacije ampak sam bi kodo najverjetneje vrgel ven in pustil samo komentar. Commit bo itak vezan na pull request (in ticket), kjer so te spremembe argumentirane in se tudi precej bolje vidi before/after. Razen ce se PRje uporablja bolj za okras :)
V praksi sem veckrat videl zgolj zakomentirane odseke kode brez dodane razlage, pa sem videl ze ogromno kode. Na sreco se veliko firm zapleza, ko jim one-man-band app preraste v 10+ ljudi in jih zacne osnovna zgresena arhitektura tako bremzati, da jim lahko ogromno racunas za svetovanje
Komentarji so namenjeni komentiranju. Neka stara koda, za katero noben ne ve zakaj tocno zakaj je tam, verjetno ni komentar.
Jaz dostikrat kakšno staro kodo zakomentiram, v smislu "to je bilo prej, pa ne dela prav" ali "tako je bilo prej, zdaj pa je zakonodaja drugačna" ali "to je bilo prej, zdaj pa tega ne rabimo več".
Ponavadi zraven še ena vrstica z datumom odstranitve in zelo na kratko razlog.
Povsem odvisno od situacije ampak sam bi kodo najverjetneje vrgel ven in pustil samo komentar. Commit bo itak vezan na pull request (in ticket), kjer so te spremembe argumentirane in se tudi precej bolje vidi before/after. Razen ce se PRje uporablja bolj za okras :)
Zgodovina sprememb…
- spremenil: user4683 ()
Boomerang ::
Manjše firme (takih je pri nas kot gob po dežju) dobrih praks niti ne poznajo. Imam izkušnje z eno zelo podobno situacijo:
Firma je dolga leta outsourcala programerja. Ko se je ta odločil krepko dvigniti urno postavko, so začeli iskati in-house programerja in tu sem nastopil jaz. Pričakovanja firme so bila, da bom v največ pol ure razvozlal njihov kvazi engine (ki so ga sestavljali in dopolnjevali več let) in odpravil buge oz. implementiral nove funkcije. In sem jih - ampak na najlažji možen način, ker pregledovati po 10 tisoče vrstic v 100 neurejenih datotekah je bil glavobol. Kakorkoli, stvar je delovala. Ampak enkrat so dali nekaj dopolnjevat prvotnemu programerju in mu več nič ni bilo jasno, celo zgrožen je bil nad mojo rešitvijo. Pa sem soočil firmo in programerja, naj mi pokažejo nek pravilnik, ki mojo kodo spodbija in dokazuje, da ni v redu. No, kmalu po tem sem šel drugam, na boljše delovno mesto. Firma pa ima še zdaj enega programerja, ki je deklica za vse - o kakšnih testerjih, QA-jih, front-end in back-end razvijalcih še niso slišali.
Firma je dolga leta outsourcala programerja. Ko se je ta odločil krepko dvigniti urno postavko, so začeli iskati in-house programerja in tu sem nastopil jaz. Pričakovanja firme so bila, da bom v največ pol ure razvozlal njihov kvazi engine (ki so ga sestavljali in dopolnjevali več let) in odpravil buge oz. implementiral nove funkcije. In sem jih - ampak na najlažji možen način, ker pregledovati po 10 tisoče vrstic v 100 neurejenih datotekah je bil glavobol. Kakorkoli, stvar je delovala. Ampak enkrat so dali nekaj dopolnjevat prvotnemu programerju in mu več nič ni bilo jasno, celo zgrožen je bil nad mojo rešitvijo. Pa sem soočil firmo in programerja, naj mi pokažejo nek pravilnik, ki mojo kodo spodbija in dokazuje, da ni v redu. No, kmalu po tem sem šel drugam, na boljše delovno mesto. Firma pa ima še zdaj enega programerja, ki je deklica za vse - o kakšnih testerjih, QA-jih, front-end in back-end razvijalcih še niso slišali.
DePalmo ::
Jaz sem "one man team" in se trudim držat dobrih praks. Imam recimo temu nadrejenega kateri mi odredi kaj in do kdaj mora biti narejeno, nato sem prepuščen samemu sebi. Rezultat mora biti delujoča (spletna) aplikacija.
Smernic katerih se trudim držat so:
- identacija kode kot se spodobi za lažjo berljivost
- PSR12
- PHP_CodeSniffer
- PHP_MessDetector
- https://github.com/alexeymezenin/larave...
- TSLint
- auto deployment (ročno mi je velikokrat delalo preglavice ker sem vedno nekaj pozabil)
- če se je odstranilo kakšno ključno funkcionalnost, jo zakomentiram in dodam komentar ter datum zakaj je bilo odstranjeno in po možnosti še link do ticketa
- smiselno komentiranje kode, vsaj kolikor toliko
Testov ne pišem ker povečini zmanjka časa, spišem jih samo ene par za osnovne stvari. Kar me je že večkrat teplo, ampak sem že izkusil da potrebuješ nekako x3 več časa da spišeš vse teste, v primerjavi koliko časa potrebuješ za pisanje kode. Da ne omenjam da se ponavadi dokumentacija za pisanje testov ne ujema z realnostjo ali pa pač preprosto ne deluje in se grem bolj "trial-and-error". Za kar se mi pa ne da več izgubljati časa in pač raje ročno potestiram zadevo. (Konkreten primer: OpenAPI sintaksa za uporabo v PhpStormu. Zato je vsa moja dokumentacija za APIje v Postmanu.) TDD sem probal in hitro opustil, mi pač logika ne potegne oz. ne ustreza.
Včasih sem samo klamfal kodo skupaj in ko pogledam tisto, mi je še danes slabo. Je res da sem pisal v core PHPju in če se tam ne držiš nekih pravil, imaš zelo hitro špagete. In to zelo dolge ... tudi preko 10k vrstic! Potem se pa znajdi tam notri, sploh ko se enkrat navadiš na MVC sintakso.
Smernic katerih se trudim držat so:
- identacija kode kot se spodobi za lažjo berljivost
- PSR12
- PHP_CodeSniffer
- PHP_MessDetector
- https://github.com/alexeymezenin/larave...
- TSLint
- auto deployment (ročno mi je velikokrat delalo preglavice ker sem vedno nekaj pozabil)
- če se je odstranilo kakšno ključno funkcionalnost, jo zakomentiram in dodam komentar ter datum zakaj je bilo odstranjeno in po možnosti še link do ticketa
- smiselno komentiranje kode, vsaj kolikor toliko
Testov ne pišem ker povečini zmanjka časa, spišem jih samo ene par za osnovne stvari. Kar me je že večkrat teplo, ampak sem že izkusil da potrebuješ nekako x3 več časa da spišeš vse teste, v primerjavi koliko časa potrebuješ za pisanje kode. Da ne omenjam da se ponavadi dokumentacija za pisanje testov ne ujema z realnostjo ali pa pač preprosto ne deluje in se grem bolj "trial-and-error". Za kar se mi pa ne da več izgubljati časa in pač raje ročno potestiram zadevo. (Konkreten primer: OpenAPI sintaksa za uporabo v PhpStormu. Zato je vsa moja dokumentacija za APIje v Postmanu.) TDD sem probal in hitro opustil, mi pač logika ne potegne oz. ne ustreza.
Včasih sem samo klamfal kodo skupaj in ko pogledam tisto, mi je še danes slabo. Je res da sem pisal v core PHPju in če se tam ne držiš nekih pravil, imaš zelo hitro špagete. In to zelo dolge ... tudi preko 10k vrstic! Potem se pa znajdi tam notri, sploh ko se enkrat navadiš na MVC sintakso.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Prva služba v programiranjuOddelek: Pomoč in nasveti | 2133 (1007) | Moe_Lester |
» | Zakaj so WD-jevi zunanji diski minuli teden izgubljali podatke?Oddelek: Novice / Diski | 6535 (2849) | Bwaze6 |
» | Kdo je "dober" programer?Oddelek: Programiranje | 5030 (3622) | kunigunda |
» | Kako ugotoviti, če si dober (strani: 1 2 )Oddelek: Programiranje | 17327 (14377) | Red_Mamba |
» | Facebook Share knofOddelek: Izdelava spletišč | 797 (534) | Tody |