Vad är för dig Nybörjarkod vs Proffskod?

Permalänk
Avstängd

Vad är för dig Nybörjarkod vs Proffskod?

Med "nybörjarkod" menar jag kod går att kompilera men som riskerar att bugga vid drift och som kan "optimeras" utifrån rådande behov för att bli "bättre kod".

Med "proffskod" menar jag kod som skrivs på en så hög nivå då personens jobb hänger på det. (Ja, det finns folk som får betalt och ändå inte levererar i sina yrken...)

Jag tittade av intressets skull på detta videoklipp plus dess del två:

Du kan spola och stoppa bilden för att se exempel på personens Noob, Advanced, och påstådda Pro kod i JS (06:30 är exempel på "Pro Code" enligt YT-kanalen).

Sedan skummade jag igenom kommentarerna och fann en som jag höll med om gällande "good vs bad code": all kod skall vara buggfri och därför bör koden (till en början) inte skrivas på ett sätt som maskerar annars tydliga buggar vid körning genom Guard Clauses som exempelvis:

if (numbers == null) return

som syns nästan högst upp vid 06:30.

Jag skulle själv klassa mig som nybörjare inom kodning och jag undrar vad Du själv skulle klassa som "nybörjarkod" vs "proffskod"? Sedan undrar jag också som en metafråga: är inte "vad är bra kodning" lite som att fråga, "vad är bra däck"? Dvs., svaret är nästan alltid, "Det beror på sammanhanget..."

Visa signatur

"Företagsboendeförmedlare" | Min Überkill Dator: Processor: Intel Pentium P5 66 Mhz OC | Moderkort: ASRock P4I65G | Minnen: 2st Samsung 128MB PC133 | Grafikkort: Canopus GeForce 256 DDR | Lagring: IBM 350 4,4 MB | Operativsystem: DOS/360 | Chassi: Mercury Full-Tower ATX Chassis |

Permalänk
Medlem

Inget enkelt ämne det här, men för mig är det uppenbara att snygg/bra kod är kod som är lätt att läsa, förstå och underhålla. Att tävla om vem som kan få in samma logik på minst antal rader har ingen merit på en arbetsplats enligt mig.

Enkla tumregler är:
* Tydliga namn på allt
* Kommentarer där det behövs
* Bryt ned problemet i mindre delar. "Söndra och härska".
* Inte återupprepa kod. Bryt ut i stödfunktioner isf.
* Korrekt indentering och lagom med tomma rader.

Gällande "Guard Clauses" så håller jag inte med videon. Att behöva skriva denna "boilerplate" för varenda funktion där det enda det gör är att dölja att du anropat funktionen felaktigt ser jag ingen vinning med. Jag håller vid konceptet "fail fast, fail hard". Att få ett felmeddelande när man anropar funktionen är 1000ggr bättre än att den bara returnerar något standardvärde.

Sedan så är det konstigt att bara vakta mot null, men inte mot felaktiga typer. Om du förväntar dig en array, men får en sträng? Bägge har .length.

Permalänk
Medlem

Jobbar som testledare så småler när jag ser att en definition mellan noob och pro skulle vara buggfri kod

Enligt mig är proffskod sådan kod som vem som helst lätt kan sätta sig in i och arbeta vidare på i framtiden. Arbeta på annans kod är vardag för utvecklare, men sällan ett moment i utbildningar. Ser ofta brister här.

Ett annat kriterie är robust kod. Dvs, om jag pillar på A så ska inte B bryta ihop.

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Medlem

@AplAy:
Proffskod,
Uppdelat i små delar med tydliga namn där man kan läsa koden som en bok och förstå vad den gör. Varje metod gör en sak.
Återanvänder kod (inte copy/pasta), utan återanvänder genom att skapa generics eller arv.
Skriver kod som inte är hårt kopplade mellan beroenden, så om man behöver byta ut delar är det enkelt att göra det utan att hela applikationen går sönder. Skriver kod som är enkelt att testa, samt även tester som verifierar att koden de skrivit fungerar.

Nybörjarkod,
Skriver oftast mer kod än som behövs för ändamålet. Tenderar att slarva med variabel- och metodnamn.
Skriver hårt kopplade beroenden mellan komponenter, vilket i sin tur snabbt kan bli spaghetti och huvudvärk.
I och med hårda beroenden är den också väldigt svår att skriva tester till, vilket gör att nybörjare knappt skriver tester. Skriver klasser eller metoder som är flera hundra rader, istället för att bryta upp det i olika där varje klass har ett jobb.

Skrivet av adzer:

Gällande "Guard Clauses" så håller jag inte med videon. Att behöva skriva denna "boilerplate" för varenda funktion där det enda det gör är att dölja att du anropat funktionen felaktigt ser jag ingen vinning med. Jag håller vid konceptet "fail fast, fail hard". Att få ett felmeddelande när man anropar funktionen är 1000ggr bättre än att den bara returnerar något standardvärde.

Jag håller helt med. Att nullchecka inne i varje metod kan dölja ett eventuellt problem. Jag föredrar att throwa ett exception, dekorera metoden med dokumentation att X exception kan throwas om Y har detta värde. Så får personen som använder metoden hantera felet.
Däremot om du anropar något API och eventuellt kan förvänta dig null, t.ex. om du ska hämta en order och den inte finns. Då tycker jag det är okej att metoden returerar null istället för att throwa exception. Exceptions är kostsamma och ska inte missbrukas där det inte behövs. En duktig programmerare vet per automatik när det ena eller det andra ska användas. Detta är något man lär sig med erfarenhet och att jobba med seniora utvecklare.

Permalänk
Hedersmedlem

För mig är proffskod sådan som även har väldefinierade unit och component tests.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem

Noobkod är egoistisk kod. Den tar inte hänsyn till sin kontext, är inte användarvänlig eller särskilt lätt att underhålla. Den har ofta onödiga beroenden utanför sitt ansvarsområde och är ofta onödigt komplex, samt introducerar inte sällan nya paket/ramverk/osv
Proffskod håller god kvalitet och 'passar' i systemet. Den följer de mönster och stilar som redan är etablerade i resten av koden. Den gör sitt jobb, inte mer, inte mindre.
Överlag är det nog för mycket prestige i nybörjarkod, man har saker att bevisa. Koden blir för personlig, det märks ganska tydligt vid PR och kommentarer där. Alldeles för många seniorer har det beteendet också.

Visa signatur

Oldschool [å:ldsku:l] adj. Användandet av datorprodukter som är äldre än 3 månader.

Permalänk
Medlem

Bra kod för mig är kod som är lätt att förstå huvudsakligen, antingen med bra dokumentation eller tydlig kod, samt att den följer någon kodstandard.
I vårat projekt använder vi verktyg för att till stor del tvinga fram en okej standard, kan handla om att allt från konsekventa mellanslag till för långt avstånd mellan deklarationen av variabel och vart den används.

Långa if-else brukar vara ett tecken på dålig kod.

Har väl lite svårt att klassa mig själv, jag skriver dålig kod emellanåt vilket jag misstänker att de flesta gör.
Men jag kan åandrasidan se när jag skriver dålig kod och iterera den till det bättre.

Jag anser mig inte vara senior utvecklare, har jobbat i "bara" 2år, men mina kollegor verkar inte hålla med mig.

Visa signatur

Stationär: Core i9 13900k | Asus X790 ROG Strix Gaming-F | 32GB DDR5 | RX 7900 XT | Lian Li PC-O11 dynamic evo
Laptop: Macbook Air | Apple M1

Permalänk
Medlem

många som tycker sig vara pro-seniora lider av abstraktions-sjukan. Dvs de abstraherar och intterface:ar i så många nivåer att när en annan utvecklare ska ta över, så hittar den knappt den kod som faktiskt körs. Pro för mig är

1. Förvaltningsbart
2. Dokumenterat
3. Rätt nivå, dvs en enklare webbsida eller enklare rutin, behöver inte kompliceras med alla verktyg i lådan
4. Hellre några rader fler som visar tydligt vad som sker än "c00la konstrukts"

Förutom de tekniska skillsen, så är ju humana skills viktiga, så som

1. Humor
2. Kunna jobba i team och kommunicera
3. Våga be om hjälp
4. Tydliga kommunicera om man inte är klar till utsatt tid
5. Kunna prata med kund/beställare och kunna hålla bra demo för det man byggt
6. Våga ta ansvar för en hel funktion/flöde, inte bara den kodsnutt som man själv skapat

mvh Lazze

Permalänk
Medlem

De programvaror jag pillat i på jobbet har mer varit "kan du fixa detta helst igår till ingen kostnad alls" så blir resultatet ofta därefter. Snabbfixar med absolut minsta tanke bakom.

På fritiden kan man lägga hur mycket tid som helst på något man vill göra "snyggt". Nu är inte min huvuduppgift på jobbet programmering så de brukar acceptera något halvdant som löser problemet för stunden.

Permalänk
Avstängd
Skrivet av Tea42BBS:

många som tycker sig vara pro-seniora lider av abstraktions-sjukan. Dvs de abstraherar och intterface:ar i så många nivåer att när en annan utvecklare ska ta över, så hittar den knappt den kod som faktiskt körs. Pro för mig är

1. Förvaltningsbart
2. Dokumenterat
3. Rätt nivå, dvs en enklare webbsida eller enklare rutin, behöver inte kompliceras med alla verktyg i lådan
4. Hellre några rader fler som visar tydligt vad som sker än "c00la konstrukts"

Förutom de tekniska skillsen, så är ju humana skills viktiga, så som

1. Humor
2. Kunna jobba i team och kommunicera
3. Våga be om hjälp
4. Tydliga kommunicera om man inte är klar till utsatt tid
5. Kunna prata med kund/beställare och kunna hålla bra demo för det man byggt
6. Våga ta ansvar för en hel funktion/flöde, inte bara den kodsnutt som man själv skapat

mvh Lazze

Med dokumenterat antar jag både kommentarer inuti koden som beskriver den för nya ögon såväl som externa dokument precis som nya programmeringsspråk är väldokumenterade med externa källor för nyintresserade kodare?

Har du exempel på vad som menas med att det är "förvaltningsbart" när det gäller kodning av appar?

Jag håller helt emed om att kodningen handlar om sammanhanget och att det skall vara tydligt vad som pågår istället för att "se coolt ut för de icke-insatta". I slutändan är ju koden till för att kompileras och köras, inte avskådas på ett nätforum eller i ett museum.

Visa signatur

"Företagsboendeförmedlare" | Min Überkill Dator: Processor: Intel Pentium P5 66 Mhz OC | Moderkort: ASRock P4I65G | Minnen: 2st Samsung 128MB PC133 | Grafikkort: Canopus GeForce 256 DDR | Lagring: IBM 350 4,4 MB | Operativsystem: DOS/360 | Chassi: Mercury Full-Tower ATX Chassis |

Permalänk
99:e percentilen
Skrivet av adzer:

Inget enkelt ämne det här

En av de viktigaste saker som sagts hittills i tråden!

Citat:

men för mig är det uppenbara att snygg/bra kod är kod som är lätt att läsa, förstå och underhålla. Att tävla om vem som kan få in samma logik på minst antal rader har ingen merit på en arbetsplats enligt mig.

Enkla tumregler är:
* Tydliga namn på allt
* Kommentarer där det behövs
* Bryt ned problemet i mindre delar. "Söndra och härska".
* Inte återupprepa kod. Bryt ut i stödfunktioner isf.
* Korrekt indentering och lagom med tomma rader.

Bra tumregler! Får jag lägga till en?

  • Missbruka inte sidoeffekter.

Jag ser detta alltför ofta, och har gjort mig skyldig till det själv åtskilliga gånger eftersom jag fram till 20-årsåldern inte kände till något annat sätt att programmera än att just missbruka sidoeffekter. (Sidoeffekter kan vara att ändra värdet på en variabel, printa ett meddelande, läsa från en fil, skicka ett meddelande över nätverket och så vidare.)

Alla användbara program har sidoeffekter, men väldigt ofta tjänar man på att begränsa dem till en delmängd av programmet och låta stora delar bestå av rena funktioner istället för "metoder" (eller vad man ska kalla det) som muterar tillstånd.

Rena funktioner är oftast lättare att förstå, kombinera, refaktorera och flytta, och att testa rena funktioner är löjligt enkelt – inte som i att det nödvändigtvis är enkelt att skriva bra tester, men som i att det är enkelt att skriva tester. Testkoden behöver essentiellt aldrig vara mer komplicerad än

expect(f(x)).toBe(y);

eftersom det inte finns något annat att testa än att returvärdet är korrekt. Att skriva tester för kod som har sidoeffekter är mycket svårare.

Ett bra exempel på hur jag tillämpar denna princip i verkligheten är Userscript Proxy, ett program som injicerar JavaScript i webbsidor som skickas genom det. Dess syfte är alltså i allra högsta grad att det ska ha sidoeffekter, men av de 15 filer det i skrivande stund består av är det bara två eller tre som innehåller kod med sidoeffekter. Resten innehåller bara konstanter och rena funktioner. Även om koden säkert inte är perfekt vill jag inte ens tänka på hur den hade sett ut om jag hade skrivit den innan jag lärde mig funktionell programmering.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

Min åsikt är att bra kod är:
* Lätt att läsa
* Lätt att debugga
* Lätt att bygga ut

Hur man åstadkommer ovanstående är annan fråga, och det finns mer än ett sätt att göra det på.

Permalänk
99:e percentilen

Det finns otroligt mycket att säga på ämnet, men jag vill ta upp en bra princip till, nämligen att skriva vad man menar.

Den här PR:en som jag skrev i veckan illustrerar denna princip rätt bra. Jag förenklade

function cliJoin(...args) { let command = ''; for (let i = 0; i < args.length; ++i) { let arg = args[i]; if (arg.length > 0) { command += command === '' ? arg : ' ' + arg; } } return command; }

till

function cliJoin(...args) { return args.filter(x => x.length > 0).join(' '); }

För mig är det uppenbart att det som menas™ är

Returnera alla icke-tomma element joinade med mellanslag.

mycket mer än

Låt command vara den tomma strängen; för alla i mellan 0 och listans längd, låt arg vara elementet på index i; om det är icke-tomt, appenda argcommand om command är den tomma strängen, annars arg med ett mellanslag framför …

och oftast bör det som menas™ också vara det som står. Undantag finns och bör, anser jag, dokumenteras med kommentarer – det är precis sådant vi ska ha dem till, inte till att förklara att let i = 0; // skapar variabeln i och sätter den till 0 och liknande.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem
Skrivet av Alling:

och oftast bör det som menas™ också vara det som står. Undantag finns och bör, anser jag, dokumenteras med kommentarer – det är precis sådant vi ska ha dem till, inte till att förklara att let i = 0; // skapar variabeln i och sätter den till 0 och liknande.

Ska vi vara petnoga bör en kommentar hellre omvandlas till kod genom att t.ex. extrahera till funktion/variabel.
Kommentarer bör begränsas till att förklara något du helt enkelt inte kan beskriva med kod.
Kommentarer tenderar att ljuga allt eftersom koden refaktoreras, såvida inte kommentaren också refaktoreras eller elimineras.

Detta sker inte sällan när flera utvecklare jobbar i samma kodbas, särskilt om den ursprungliga författaren inte längre jobbar kvar.

Jag ser ganska ofta villkor i if-satser där dess intention inte alls är tydlig, vilket gör det svårt att snabbt förstå vad koden är tänkt att lösa för problem.

// Does the thing if x and y if (someList.size() > 0 && someObject != null) { ... }

Kodsnutten ovan kräver att jag som läsare av koden förstår vad someList och someObj har för beroende till varandra. Skulle vi istället extrahera villkoret till en variabel har vi större möjlighet att uttrycka kodens intention.

boolean shouldDoTheThing = (someList.size() > 0 && someObject != null); if (shouldDoTheThing) { ... }

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
99:e percentilen
Skrivet av noMad17:

Ska vi vara petnoga bör en kommentar hellre omvandlas till kod genom att t.ex. extrahera till funktion/variabel.
Kommentarer bör begränsas till att förklara något du helt enkelt inte kan beskriva med kod.
Kommentarer tenderar att ljuga allt eftersom koden refaktoreras, såvida inte kommentaren också refaktoreras eller elimineras.

Detta sker inte sällan när flera utvecklare jobbar i samma kodbas, särskilt om den ursprungliga författaren inte längre jobbar kvar.

Jag ser ganska ofta villkor i if-satser där dess intention inte alls är tydlig, vilket gör det svårt att snabbt förstå vad koden är tänkt att lösa för problem.

// Does the thing if x and y if (someList.size() > 0 && someObject != null) { ... }

Kodsnutten ovan kräver att jag som läsare av koden förstår vad someList och someObj har för beroende till varandra. Skulle vi istället extrahera villkoret till en variabel har vi större möjlighet att uttrycka kodens intention.

boolean shouldDoTheThing = (someList.size() > 0 && someObject != null); if (shouldDoTheThing) { ... }

En mycket bra poäng som inte står i motsatsförhållande till vad jag skrev, men verkligen förbättrar det! Klockrent exempel med if-villkor.

Det jag menade med att undantag bör dokumenteras med kommentarer var att när man frångår principen om att skriva vad man menar™, och istället skriver en "konstig" implementation, är det ofta bra att förklara varför i en kommentar. Kan ju finnas ej uppenbara prestandafördelar med en "konstigare" implementation, till exempel.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

Proffskod är när man använt enklast möjliga lösning för att uppnå det man vill. Nybörjarkod är när man krånglat till det hela i onödan, använt onödigt komplicerade lösningar för att visa att man kan, eller hittat på en egen lösning på ett standardproblem för att det är häftigt.

Permalänk
Medlem

Jag håller med om massor som skrivits här, men jag tycker nästan, att efter 25 år, det viktigaste av allt är att kod skall vara lättläst och förutsägbar. Allt annat är små myror jämfört med det.

Lättläst och förutsägbar kod är skriven för någon annan att läsa och använda - om så "någon annan" är en själv, 12 månader senare.

Allt det andra som pratats om här är fint det med, men jag tycker det är en 10 mot 1 ratio på viktigheten.

Permalänk
Medlem

@Alling: Jag har sett dina poster här i forumet i några år nu och på dina svar kan man se hur du gått från "noob" till att närma dig "pro" - Skitkul tycker jag! Vi känner ju inte varandra alls, men jag gillar ändå när man ser hur du hela tiden har förbättrats och kommit med än mer insiktsfulla kommentarer och tips!

Permalänk
Avstängd

Många bra svar, mina tillägg:
Ett proffs känner sina begränsningar, lovar inte saker som den inte kan genomföra. Följer företagets eller uppdragsgivarens riktlinjer om hur kod ska vara strukturerad och se ut. Använder de verktyg som passar utan prestige, kräver alltså inte att få använda Ryder istället för VS för att man inte gillar MS exempelvis. Ett proffs hoppar heller inte på alla nya trender bara för att de är trendiga utan värderar fördelarna mot nackdelarna med att exempelvis byta ramverk eller gå mot en ny typ av arkitektur.

Permalänk
Medlem
Skrivet av snajk:

Många bra svar, mina tillägg:
Ett proffs känner sina begränsningar, lovar inte saker som den inte kan genomföra. Följer företagets eller uppdragsgivarens riktlinjer om hur kod ska vara strukturerad och se ut. Använder de verktyg som passar utan prestige, kräver alltså inte att få använda Ryder istället för VS för att man inte gillar MS exempelvis. Ett proffs hoppar heller inte på alla nya trender bara för att de är trendiga utan värderar fördelarna mot nackdelarna med att exempelvis byta ramverk eller gå mot en ny typ av arkitektur.

Vilken IDE/editor du kodar i spelar inte särskilt stor roll. Där anser jag att du som utvecklare bör få använda det du är mest bekväm med. Det viktiga är att eventuell stilmall efterföljs så att koden hålls enhetlig oavsett om den skrevs i Eclipse, VS, eller Vim.

Dock har väl detta mer att göra med att agera professionellt snarare än "proffskod" vs "nybörjarkod".

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Avstängd
Skrivet av noMad17:

Vilken IDE/editor du kodar i spelar inte särskilt stor roll. Där anser jag att du som utvecklare bör få använda det du är mest bekväm med. Det viktiga är att eventuell stilmall efterföljs så att koden hålls enhetlig oavsett om den skrevs i Eclipse, VS, eller Vim.

Nja, det beror förstås på vad det är för företag och så, och förstås anledningen till varför man vill använda något annat. Jag har kollegor som vägrar VS trots att det är integrerat mot våra pipelines och ärendesystem, trots att vi har krav på att använda lint-plugin och så vidare. Jag tror mycket av det handlar om den här grejen om att man tror att man är en stjärna som kan styra och ställa som man vill för ens kod är (i ens egna ögon) så fruktansvärt bra eller att man är så oumbärlig.

Tänk dig en liknande situation på något annat typ av arbete. Tror du en fabriksarbetare på Volvo hade blivit långvarig om han vägrade exempelvis Bahco-verktyg och krävde att få använda jag vet inte Bosch eller nåt (och dessutom ville att företaget skulle betala för dessa verktyg när de redan hade betalar för de som alla andra använder)?

Citat:

Dock har väl detta mer att göra med att agera professionellt snarare än "proffskod" vs "nybörjarkod".

Jo absolut. Men proffsig kod var redan ganska väl täckt i tråden och att vara ett proffs handlar om mer än att bara skriva bra kod. Jag tar hellre ett team med mediokra programmerare som följer guidelines, skriver tester och levererar kod som fungerar och är förståelig än ett team med individuella snöflingor som skriver grym kod men som vägrar att rätta sig i ledet, skriva dokumentation, samarbeta med varandra, informera om hur arbetet fortskrider och så.

Jag har flera gånger sett den typen av personer inte förstå varför de inte får så stora löneökningar som de anser att de förtjänar följt av ett ultimatum om att de kräver X i lön annars slutar de, så blir det bara tack och hej.

Permalänk
Datavetare

Bra amatörkod: finns inga uppenbara buggar
Proffskod: är uppenbart att inga buggar finns

Lite mer seriöst: proffs fattar att kod läses långt oftare än man skriver det. D.v.s. de mest kompakta är sällan det bästa, simplaste sättet att lösa problemet är typiskt det bästa sättet.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av AplAy:

Med dokumenterat antar jag både kommentarer inuti koden som beskriver den för nya ögon såväl som externa dokument precis som nya programmeringsspråk är väldokumenterade med externa källor för nyintresserade kodare?

Har du exempel på vad som menas med att det är "förvaltningsbart" när det gäller kodning av appar?

Jag håller helt emed om att kodningen handlar om sammanhanget och att det skall vara tydligt vad som pågår istället för att "se coolt ut för de icke-insatta". I slutändan är ju koden till för att kompileras och köras, inte avskådas på ett nätforum eller i ett museum.

Förvaltningsbart kan innebära många saker, några exempel:

1. Inte använda för många externa referenser / 3e parts bibliotek. Då dessa kan gå ur tiden, vara osäkra
2. Efterlämna en utvecklingsmiljö där projektet fungerar att kompilera, till exempel en virtuell maskin. Om möjligt så ska det finnas tester att köra för att verifiera projektet. manuella eller automatiska, inte bara unit-tester
3. Se till att alla konton / ip adresser / lösenord finns dokumenterade
4. Datamodellen ska finnas återskapningsbar om en databas används i någon form
5. Källkoden ska vara versionshanterad i ett repo
6. Dokumentation ska ha ett avsnitt för "kommande utvecklare", där man beskriver hur man kommer igång, o upplägget av projektet så att arkitekturen kan hållas över tid

Några saker för förvaltningsbarhet IMHO

o en sista sak, koden är bara en liten del av hela leveransen som kund förväntar sig

// Lazze

Permalänk
Medlem
Skrivet av snajk:

Nja, det beror förstås på vad det är för företag och så, och förstås anledningen till varför man vill använda något annat. Jag har kollegor som vägrar VS trots att det är integrerat mot våra pipelines och ärendesystem, trots att vi har krav på att använda lint-plugin och så vidare.

Jag tycker det är väldigt skevt att försöka låsa in sina utvecklare i ett fåtal verktyg. Alla har olika preferenser, och verktyg kommer och går. Lägg in era style checks etc i er CI-pipeline, och låt sedan utvecklare uppfylla dem hur de vill. Lintern ni använder är med stor sannolikhet inte bunden till VS, och är den det borde ni byta linter.

Ps. Jag är givetvis medveten om att det inte är du som sätter dessa krav, så "ni" riktar sig till din arbetsplats, och inte dig som person.

Permalänk
Avstängd
Skrivet av SimpLar:

Jag tycker det är väldigt skevt att försöka låsa in sina utvecklare i ett fåtal verktyg. Alla har olika preferenser, och verktyg kommer och går. Lägg in era style checks etc i er CI-pipeline, och låt sedan utvecklare uppfylla dem hur de vill. Lintern ni använder är med stor sannolikhet inte bunden till VS, och är den det borde ni byta linter.

Ps. Jag är givetvis medveten om att det inte är du som sätter dessa krav, så "ni" riktar sig till din arbetsplats, och inte dig som person.

Jo, men någonstans får man ju ändå dra gränsen liksom. På mitt förra jobb var jag scrummaster för ett team där medelåldern låg en bit över 50 och jag skulle få dem att börja använda vårt nya källkodshanteringssystem, TFS (inte mitt val, men det var ett väldigt steg upp från tidigare i alla fall), som de absolut inte var intresserade av att göra. Men från företagets synvinkel var det förstås totalt oacceptabelt, det spelar ingen roll ifall någon hade ett "jättesmart" system med mappar på servern parat med det gamla system (VSS) som de hanterade manuellt. I samma vända skulle jag också få dessa utvecklare (eller bakåtsträvare som de kallade sig själva lite skämtsamt, men det var inget skämt för mig) att skriva databasgrejer i VS istället för direkt i SSMS då det ju säkerställde att saker fungerade på ett helt annat sätt då man byggde hela lösningen, publicerade till en testmiljö, körde enhetstester och liknande som inte fungerade i SSMS.

Sen skiter väl jag i ifall någon vill använda Notepad++ medan andra vill köra VS Code för enkel texthantering eller nåt, men när det handlar om utvecklingsmiljöer som är integrerade mot byggsystem och liknande så tycker jag att man antingen får använda de tillhandahållna verktygen, eller så får man se till att ens egenvalda verktyg fungerar, med allt vad det innebär av integration, kodstandarder, tredjepartsbibliotek och liknande, på sin fritid. Får man till det så spelar det förstås ingen roll, men om det är strul hela tiden eller något annat som stör så att det tar längre tid med dessa verktyg så är det inte ok.

Permalänk
99:e percentilen
Skrivet av Ernesto:

@Alling: Jag har sett dina poster här i forumet i några år nu och på dina svar kan man se hur du gått från "noob" till att närma dig "pro" - Skitkul tycker jag! Vi känner ju inte varandra alls, men jag gillar ändå när man ser hur du hela tiden har förbättrats och kommit med än mer insiktsfulla kommentarer och tips!

Kul att du lyfter det! Man lär så länge man lever. Förutom rent tekniska kunskaper jag inhämtat i synnerhet sedan jag började på högskolan har jag också försökt att uttrycka mig mindre kategoriskt och dikotomiskt. Exempelvis skulle jag för fem år sedan i det här inlägget kanske ha skrivit ”Nej, HTML är definitivt inget programmeringsspråk, punkt slut.” Oftare än man skulle önska är det ju inte så enkelt i verkligheten.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk

Alla ni gör det för svårt!

Gör som jag istället: Tänk i andra-perspektiv.

Tänk dig hela tiden att din kod skall läsas av andra och dom är helt ny. Nu gäller det att din kod ska vara enkel och förklarande.

Svårare än då blir det inte.

P.S!
Undvik OOP om du inte behöver det.

Permalänk
Medlem
Skrivet av heretic16:

Alla ni gör det för svårt!

Gör som jag istället: Tänk i andra-perspektiv.

Tänk dig hela tiden att din kod skall läsas av andra och dom är helt ny. Nu gäller det att din kod ska vara enkel och förklarande.

Svårare än då blir det inte.

P.S!
Undvik OOP om du inte behöver det.

Tycker att de allra flesta i denna tråd har sagt precis samma sak, fast även givit tips på hur det kan uppnås.

Det är lätt att häva ur sig kommentarer om att man ska undvika x eller y, men då får man gärna backa upp det påståendet med något konkret också.

Det är mycket riktigt, som du säger, att du bör undvika OOP om din lösning inte behöver det. Det påståendet är gångbart för alla paradigmer (jag skulle nog gå så långt att säga att det gäller det mesta här i livet).

Jag ser ofta folk som skriver att OOP är djävulen självt och att det aldrig bör användas, men jag har nog aldrig sett något konkret exempel på vad det bättre alternativet skulle vara.

Oavsett om du skriver objekt-orienterad, funktionell, eller procedurell kod bör den vara lätt att:

  1. läsa

  2. testa

  3. utöka

Om ovanstående kriterier inte möts spelar det ingen roll vilken paradigm koden är skriven enligt, den kommer ändå att vara dålig.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Medlem
Skrivet av talonmas:

...

Ett annat kriterie är robust kod. Dvs, om jag pillar på A så ska inte B bryta ihop.

Håller med 100%! Man talar ofta om loose coupling / decoupling, dvs att saker ska vara modulära och generella, lätta att byta ut,ändra och återanvända . Detta gör koden mycket lättare att underhålla. Skriva bra test på sin kod tycker jag också är ett hallmark, något jag inte riktigt lärt mig ännu