Permalänk
Avstängd
Skrivet av StarChild42:

På min utbildning (civil. universitetet) är det obligatoriskt att ha beskrivande engelska variabel-/metodnamn samt kommentarer på engelska i koden. Anledningen är att en annan programmerare/lärare ska kunna titta i koden och snabbt förstå vad som sker.

Jo, sedan när du jobbat några år och blir senior så lär du dig viktigare koncept som clean code, maintainability osv

Visa signatur
Permalänk
Avstängd
Skrivet av Shimonu:

Nja, här skulle jag säga att det beror på. Alla arbetsplatser låter inte utvecklare göra egna unittester, det är som gjort för att bli fel. Det är struntsamma om en utvecklare gjort ett dåligt unittest och produkten felar. Det kommer inte hjälpa att kunna skylla på utvecklaren efteråt. Oberoende testare ger högre kvalitet. Utvecklaren kan göra funktionella tester för att verifiera och bevisa till rimlig grad att det lever upp till krav men det är testarens ansvar att göra slutgiltig verifiering.
Jag har suttit på en plats där jag själv bara hade en begränsad miljö för att verifiera min kod. Det fanns dyr licensierad utrustning som man bara gav till testare, så även om jag testade och allt såg bra ut hittades fel hos testaren sen som jag aldrig kunde se.

Dummaste jag hört. Unittester är ett krav för att du ska kunna göra en stor refaktor utan risk för att införa fel. Men att bara ha unittester duger inte, du måste ha spec-tester, scenariotester och sedan manual regissionstestning

Visa signatur
Permalänk
Medlem

Jag tycker att kommentarer skall finnas i kod men det kanske är för att jag själv är så dålig på att koda så jag inte fattar vad jag håller på med Då behöver jag en virtuell post-it

Visa signatur

.: Learn the system, Play the system, Break the system :.

Permalänk
Medlem
Skrivet av Erik_T:

Även sådana kommentarer är användbara: Om kommentarer inte matchar koden, då vet man att man absolut inte kan lita på att vare sig kommentarer eller kod är korrekt.
Dvs. det är ett tecken på en dålig, slarvig, och/eller lat programmerare.

Kommentarer läses normalt som stöd, när man inte förstår vad den riktiga koden gör. Många kommentarer kommer aldrig läsas igen, inte ens av den som skriver kommentaren. Men de är ovärderliga efter ett tag, speciellt för komplicerad kod eller att förstå hur kod hänger ihop. Speciellt i språk som har lång livscykel eller där programmerare byts ut. Man kommer inte ihåg hur man tänkte för 10 år sedan.

Vad jag tror är ett stort problem när kodande diskuteras är att det är få personer som deltagit i stora projekt. Idag är kontrasterna större än någonsin eftersom det finns så mycket ramverk, enklare appar mm. Man kan programmera och bara pysslat med småsaker i relation till att exempelvis bygga någon applikation i språk som C++.
Ramverk är ofta gjorda så att programmeraren är hårt styrd med, ibland så styrd att det man vill göra inte går på grund av ramverket och inte det språk man sitter i.

En annan fördel med att dokumentera är att det finns verktyg som kan parsa ut kommentarerna och göra det hela sökbart, som en slags API dokumentation. Personligen brukar jag lägga in kodexmpel i kommenterar för de klarar ofta "markdown" för bättre formatering.

Doxypress är ett hett tips, den klarar många språk. Finns här: Doxypress

En annan sak angående kodande, nästan alla anammar stilen lowerCamelCase idag. Den här stilen var det SUN med sitt Java som först gick ut hårt med. Java marknadsfördes som ett enklare alternativ till C och C++ samt att man enklare skulle kunna flytta applikationen till olika operativsystem. Något som visade sig vara mycket svårare än marknadsförningen. Gissningsvis tog även javascript efter, det enda som liknar språken java och javascript är visserligen namnen men browsrar och internet började dyka upp i samma veva som SUN gick ut hårt med Java.
lowerCamelCase är troligen den sämsta stilen man kan avända sig av för att få läsbar kod för andra programmerare. Exakt varför SUN valde den stilen vet jag inte men i och med att Java var lite designat för "inte så duktiga" programmerare så kanske man ville bibehålla programmerare på en lägre nivå. Man gjorde helt enkellt språket på ett sätt så de skulle stanna i utvecklingen

Permalänk
Skrivet av CyberVillain:

Jo, sedan när du jobbat några år och blir senior så lär du dig viktigare koncept som clean code, maintainability osv

Det ena behöver väl inte utesluta det andra?

Permalänk
Medlem
Skrivet av CyberVillain:

Jag skrev en kommentar idag.. fyfan.. Tog emot

/* Issue #3997 Gamla invoice parser/import-koden fixar inte att man jobbar på befintliga fakturor som detta är. Därav retur av tom lista. Detta är en workaround pga att Skandia inte jobbar med TXID på sin återrapportering. */ return Enumerable.Empty<IncomingInvoice>();

Tycker det där är en jättebra kommentar. Just för ytor mellan system—såväl interna som tredjeparts—där koden av någon anledning måste göra något som vid första anblick verkar tokigt är väl lämpade för kommentarer. Skulle säga att det är en välkommen kommentar som inte borde ta emot

Annars håller jag med om att kommentarer sällan har ett egenvärde.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Hedersmedlem
Skrivet av CyberVillain:

Dummaste jag hört. Unittester är ett krav för att du ska kunna göra en stor refaktor utan risk för att införa fel. Men att bara ha unittester duger inte, du måste ha spec-tester, scenariotester och sedan manual regissionstestning

Uppskattar inte riktigt din formulering, vill du utveckla vad som är det "dummaste du hört"?

Jag har inte sagt att unittester ska undvikas, jag menar att det inte är upp till utvecklaren att implementera unittester eller några andra automatiska tester. Testning ska givetvis finnas.

Permalänk
Medlem

Nu är jag ju bara hobbyprogrammerare, men jag brukar skriva kommentarer där jag inte anser att koden är självförklarande, och för att dela upp i sektioner på ett tydligare sätt. Även vid vissa uträkningar, speciellt de som jag förenklat kan behöva en förklaring till varför den ser ut som den gör och vad vissa siffror kommer ifrån. Någon har säkert en fin kommentar till varför det inte behövs
Håller dock alltid kommentarerna korta, annars förstör det översikten. Finns ju säkert program som kan dölja kommentarer iofs.

Visa signatur

Maskin: i7, 64GB ram, 4070 Ti Super, Seasonic 1000W, 2 x 24" + Acer 27" XB271HUBM
OS: Win11

Permalänk
Medlem
Skrivet av CyberVillain:

Dummaste jag hört. Unittester är ett krav för att du ska kunna göra en stor refaktor utan risk för att införa fel. Men att bara ha unittester duger inte, du måste ha spec-tester, scenariotester och sedan manual regissionstestning

Alla testar sin kod, det går inte att utveckla utan att testa. Det skiljer bara lite i tekniker hur man testar men test har funnits så länge man har programmerat

Permalänk
Skrivet av CyberVillain:

Jag tar bort alla ouppdaterade kommentarer jag hittar eller som jag finner överflödiga

Jag skrev en kommentar idag.. fyfan.. Tog emot

/* Issue #3997 Gamla invoice parser/import-koden fixar inte att man jobbar på befintliga fakturor som detta är. Därav retur av tom lista. Detta är en workaround pga att Skandia inte jobbar med TXID på sin återrapportering. */ return Enumerable.Empty<IncomingInvoice>();

Bara nyfiken men skriver du verkligen kommentarer på svenska? Vi har ju ett väldigt bra universiellt språk för kod (engelska) som i princip alla utvecklare kan. Även utvecklare från länder där man generellt inte är så bra på engelska. Ni kanske bara är svenska utvecklare men man vet aldrig när någon utan svenskkunskaper kommer in.

I övrigt håller jag väl med om att kod skall vara självdokumenterande så långt det går. Sedan om en funktion har någon speciell formatering på in- eller utdata på något sätt är det ju trevligt om det står tydligt.

Permalänk
Avstängd
Skrivet av Teknocide:

Tycker det där är en jättebra kommentar. Just för ytor mellan system—såväl interna som tredjeparts—där koden av någon anledning måste göra något som vid första anblick verkar tokigt är väl lämpade för kommentarer. Skulle säga att det är en välkommen kommentar som inte borde ta emot

Annars håller jag med om att kommentarer sällan har ett egenvärde.

Var väl lite med glimten i ögat där på det jag skrev hehe. Jag är itne rädd för att skriva kommentarer av den där typen. I mitt day job krävs det. I mitt spel som jag gör på sidan av så är koden så fin och alla kontrakt så väldefinierade mot andra parter att kommentarer av denna typ är överflödig

Visa signatur
Permalänk
Avstängd
Skrivet av kristofferf:

Bara nyfiken men skriver du verkligen kommentarer på svenska? Vi har ju ett väldigt bra universiellt språk för kod (engelska) som i princip alla utvecklare kan. Även utvecklare från länder där man generellt inte är så bra på engelska. Ni kanske bara är svenska utvecklare men man vet aldrig när någon utan svenskkunskaper kommer in.

I övrigt håller jag väl med om att kod skall vara självdokumenterande så långt det går. Sedan om en funktion har någon speciell formatering på in- eller utdata på något sätt är det ju trevligt om det står tydligt.

Just denna kund har som convention att alla dokumentation sker på svenska.

Visa signatur
Permalänk
Avstängd
Skrivet av klk:

Alla testar sin kod, det går inte att utveckla utan att testa. Det skiljer bara lite i tekniker hur man testar men test har funnits så länge man har programmerat

Jo, men automatiska tester är ett krav. Jag skulle sträcka mig till att säga att även continues integration är ett krav

Visa signatur
Permalänk
Avstängd
Skrivet av Shimonu:

Uppskattar inte riktigt din formulering, vill du utveckla vad som är det "dummaste du hört"?

Jag har inte sagt att unittester ska undvikas, jag menar att det inte är upp till utvecklaren att implementera unittester eller några andra automatiska tester. Testning ska givetvis finnas.

Unittester är ju de tester som är närmast koden, har aldrig hört något team där inte utvecklarna skriver dessa.
För några år sedan försökte vi få våra kravare att börja använda spec-flow. Av 3 kravare var det bara en som tog det till sig och till slut lärde sig skriva egna tester.

Visa signatur
Permalänk
Medlem

Jag kommenterar. Mina kollegor gör det aldrig. De tycker inte jag borde. Men jag kommenterar ändå.
Exempel på mina enkla kommentarer:

Dessa kommentarer låter mig snabbt se vad kodens uppgift är. Jag tycker att det sparar tid. Jag störs inte av kommentarer så långe de inte ser ut som de Trådstartaren hittat.

Som ni ser skriver är även

Citat:

måsvinge{

inte

Citat:

måsvinge
{

Dold text
Permalänk
Avstängd
Skrivet av Zipparn:

Jag kommenterar. Mina kollegor gör det aldrig. De tycker inte jag borde. Men jag kommenterar ändå.
Exempel på mina enkla kommentarer:
https://i.imgur.com/PX6Hw6D.png

Dessa kommentarer låter mig snabbt se vad kodens uppgift är. Jag tycker att det sparar tid. Jag störs inte av kommentarer så långe de inte ser ut som de Trådstartaren hittat.

Fyfan du borde få sparken, på riktigt ärligt nu... Sluta med det där

edit: Du borde ersätta det där med någoin form av template ramverk....

Visa signatur
Permalänk
Inaktiv

Om man kodar simpla saker kan man skippa kommentaren. Är det mer avancerade saker man gör så behövs ofta kommentarer, där man ska skriva väldigt lite i koden man man kan hänvisa till ett dokument på ett par hundra sidor som beskriver varför koden är som den är.

I många situationer ser koden rent förjävlig ut och folk som läser koden kan undra om utvecklaren var hög eller något, det är milt sagt ett r-nt helvete för andra att felsöka och underhålla den. Någon programmerare som tror sig vara erfaren, kan då få för sig att skriva om koden utan att veta om de underliggande problemen som kan vara intermittenta.

Det behövs då både information som beskriver problemet, det kan t.ex stå att enligt ett visst protokoll så ska det fungera på ett visst sätt, apparaten man pratar med följer dock inte protokollet till punkt och pricka. Och man kan få koda på ett knepigt sätt.

Jag minns en kommunikation som jag gjorde, efter jag hade skickat värdet till en hårdvara så läste jag det. Om jag ej fick tillbaka värdet så skrev jag om, så höll jag på x antal gånger, efter detta sänkte jag kraven på quality på värdet och satte ett lågt prioriterat larm. Om detta ändå inte gick höjde jag prioriteten på larmet. Därefter ökade jag på sleepen mellan varje försök. När det hade gått en hel dag så höjde jag larmet prioritet ytterligare och ökade sleepen ännu mer.

I den lilla kod jag gjorde så hade jag en tanke. Det är väldigt svårt för andra att förstå vad min tanke är. Och bara frågan varför den andra hårdvaran beter sig som den gör är väldigt svårt för andra att förstå och man bör hänvisa till något dokument som tar upp alla orsaker till varför den kan bete sig så.

Permalänk
Medlem

Beror helt på språk. JavaScript är det i princip helt omöjligt att garantera datatyper och klassinstancer utan att kommentera med t.ex. jsdoc. I PHP och JavaScript behövs detta för att navigera snabbt med sin IDE, utan detta är det ett helvete att hitta rätt ibland.

Skickades från m.sweclockers.com

Permalänk
Avstängd

@aholman: Typescript till räddningen

Visa signatur
Permalänk
Hedersmedlem
Skrivet av CyberVillain:

Unittester är ju de tester som är närmast koden, har aldrig hört något team där inte utvecklarna skriver dessa.
För några år sedan försökte vi få våra kravare att börja använda spec-flow. Av 3 kravare var det bara en som tog det till sig och till slut lärde sig skriva egna tester.

Välkommen till brancher där liv står på spel och man inte vill lita på att utvecklaren skriver korrekta tester av sin egen kod.

En utvecklare riskerar att skriva tester som testar koden precis som han skrivit den istället för vad kraven säger. Så har hen infört en bugg kommer bara buggen testas

Permalänk
Medlem
Skrivet av CyberVillain:

Jo, men automatiska tester är ett krav. Jag skulle sträcka mig till att säga att även continues integration är ett krav

Vad är ett automatiskt test?
Det finns massor av tekniker. C++ har en preprocessor och man kompilerar för debug och release (ibland andra varianter), finns oftast massa "assert". Förutom det kan en del ha inspelade sekvenser där programmet körs och skall bete sig på ett visst sätt. En lite ovanlig men som enligt mig varit väldigt bra teknik är att bygga i något skriptspråk i applikationen (om man har möjlighet till det). Exempelvis LUA. Då kan man bygga skript i LUA som körs för att testa i olika miljöer och operativ.

Det enda nya med detta "testade" är att man hittat på massa namn för testmetoder och en del har pysslat med att bygga olika testbibliotek. Vissa har inte fattat och byggt så mycket tester att de fått fasligt svårt att ändra koden

Permalänk
Inaktiv
Skrivet av Shimonu:

Välkommen till brancher där liv står på spel och man inte vill lita på att utvecklaren skriver korrekta tester av sin egen kod.

En utvecklare riskerar att skriva tester som testar koden precis som han skrivit den istället för vad kraven säger. Så har hen infört en bugg kommer bara buggen testas

Det går göra båda och. Jag har i princip alltid en besiktningsman på ett helt annat företag som testar allt vad jag gör, nu gör jag inga livsviktiga saker för då skulle de gå igenom koden.

Men samtidigt många språk som nämns i tråden är för persondatorer och köra något livsviktigt på den är ett stort fail från första början. Persondatorer sköter enbart övervakning och HMI, styrningen ligger i plc, mikrodatorer och annat.

Permalänk
Hedersmedlem
Skrivet av anon159643:

Det går göra båda och. Jag har i princip alltid en besiktningsman på ett helt annat företag som testar allt vad jag gör, nu gör jag inga livsviktiga saker för då skulle de gå igenom koden.

Men samtidigt många språk som nämns i tråden är för persondatorer och köra något livsviktigt på den är ett stort fail från första början. Persondatorer sköter enbart övervakning och HMI, styrningen ligger i plc, mikrodatorer och annat.

Precis, saker är alltså inte svartvita. Kommentarer är inte alltid dåliga, det finns gott om fall där de är bra. Tester ska inte alltid göras av utvecklaren.

Permalänk
Medlem
Skrivet av CyberVillain:

Fyfan du borde få sparken, på riktigt ärligt nu... Sluta med det där

edit: Du borde ersätta det där med någoin form av template ramverk....

Skickades från m.sweclockers.com

Permalänk
Medlem

Att kommentera kod eller inte... efter 20 år kan jag bara konstatera att jag hellre jobbar med en junior utvecklare som kommenterar för mycket än en pretentiös senior utvecklare som vägrar kommentera av principskäl och som klagar på andras kod.

Stavning
Visa signatur

MacBook Pro 14" | M1 Pro 10/16-Core | 32GB | 1TB
Legion Pro 16" | Ryzen 7 5800H | 16 GB | 1TB | GeForce RTX 3060

Permalänk
Avstängd
Skrivet av Shimonu:

Välkommen till brancher där liv står på spel och man inte vill lita på att utvecklaren skriver korrekta tester av sin egen kod.

En utvecklare riskerar att skriva tester som testar koden precis som han skrivit den istället för vad kraven säger. Så har hen infört en bugg kommer bara buggen testas

Du pratar om två helt olika typer av tester. Enhetstester använder man för att kunna göra stora förändringar av koden utan att ändra på beteendet

Visa signatur
Permalänk
Medlem
Skrivet av CyberVillain:

Fyfan du borde få sparken, på riktigt ärligt nu... Sluta med det där

edit: Du borde ersätta det där med någoin form av template ramverk....

Ramverk är av ondo.
De gör aldrig riktigt det man vill, så man blir antingen tvungen att ändra i ramverket (Dålig idé!) eller skriva onödigt komplicerad kod för att ta sig runt ramverkets begränsningar.
Dessutom blir det ytterligare en sak man måste lära sig utöver programmeringsspråket och domänen.

(Okay, jag tar i lite väl mycket - ramverk kan vara högst användbara, men ibland ställer de till mer problem än de löser, och de används ofta mer än nödvändigt. Dvs ungefär som kommentarer. )

Permalänk
Avstängd

@Erik_T: OKej, inte ramverk då, utan bibliotek.

Visa signatur
Permalänk
Hedersmedlem
Skrivet av CyberVillain:

Du pratar om två helt olika typer av tester. Enhetstester använder man för att kunna göra stora förändringar av koden utan att ändra på beteendet

Min poäng är enkel. Utvecklare som utvecklar egna automatiska tester är mer riskabelt än oberoende testare. Det finns därmed situationer där man inte vill tillåta utvecklare att testa sin egen kod. Jag gick emot uttalandet att utvecklare alltid ska utveckla egna unittester.

Permalänk
Medlem

Kommentarer skall alltid användas om något görs som definitivt inte är uppenbart självförklarande, det är bra särskilt för andra inblandade (medarbetare eller någon som i framtiden tar över ens projekt) men även för en själv.

Alla jag känner som anser att källkod = dokumentation brukar inte sällan skriva kod som är svår eller omöjlig att begripa, vilket är extremt irriterande. Särskilt när de använder värdelösa namn på klasser, metoder och variabler som inte beskriver innehållet överhuvudtaget.

Visa signatur

5950X, 3090