Vill du vara del av diskussionerna i forumet, ställa frågor eller hjälpa andra? Registrera dig här!
Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2019

Skatteverkets JavaScript :D

Vem har sagt att det är tråkigt att deklarera?

Ja öppnade webbläsarens utvecklarverktyg när jag höll på att granska min deklaration och såg följande i konsolen:

I run after the page is ready. DOJO parsed done and ready. fLaggTillMenyLankLyssnare done. einkPageInit done.

”I run after the page is ready.” och ”fLaggTillMenyLankLyssnare done.” fick mig att undra hur JavaScript-koden på sidan egentligen ser ut. Vilken guldgruva!

https://sso.skatteverket.se/ef/ef_webapp/skript/lokal/lokal.js

Gillar du variabelnamn och kommentarer på svenska, utkommenterad gammal debug-kod och snurrig spaghetti så kan jag varm rekommendera att titta igenom ovannämnda skript!

(Tips: Ladda ned filen först och öppna i en texteditor – direkt i webbläsaren blir åäö fel.)

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2006

Alltså, vafan sysslar dom med?

**edit **

Denna mening :

// TODO Är det någon mening att iterera över en lista här? Det är ju ändå gjort för att bara vara ett fält, "övriga upplysningar"?

Ja, du kanske ska kolla upp det?

Trädvy Permalänk
Medlem
Plats
Honolulu
Registrerad
Jun 2004

Jag uppskattade speciellt `fIsDirty` nestlade if och flera olika return och loopande beteenden.

Det är den här koden som nybörjade behöver se, vem som helst kan uppenbarligen få jobb med begränsade kunskaper!

Trädvy Permalänk
Medlem
Registrerad
Nov 2019

Svågerpolitik heter det när man låter sin svåger få utföra jobbet före andra. Men vad heter det när tjänstemän låter deras barn i 10års åldern få jobbet?

Jag förstår inte hur koden kan se ut som den gör. Alltså detta är en samhällskritisk tjänst som ska valideras till den förbannelse. Det är då en eller flera helt externa besiktningsmän på andra företag som ska godkänna jobbet och dessa får precis som kodaren mycket skit om de missar något.

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Sep 2010

Jobbar faktiskt som systemutvecklare på Skatteverket men inte direkt med skattedeklarationssystemet. Jag vill bara lyfta fram att all kod inte ser ut så här som vi arbetar med Mycket av det jag jobbar med är mycket välskriven och strukturerad. I alla fall personerna i mitt team är otroligt duktiga och passionerade över det de håller på med och vill göra sitt bästa. Det testas ordentligt och jag blir lika förvånad varje gång när jag som programmerare missar något som inte testarna gör. Men det är ganska normalt att skriva variabler och funktioner på svenska (vilket jag stör mig lite på). Kan inte tala för alla systemen. Men som hyfsad nyanställd (och junior) blev jag förvånad hur enkelt jag hade att komma in i ett utav våra system. Försöker inte skydda eller något och det finns mycket som inte är perfekt.

EDIT: Skriver som en kratta på söndagar (med andra ord lite grammatiska rättningar)

Trädvy Permalänk
Medlem
Registrerad
Sep 2003

haha humor

Trädvy Permalänk
Medlem
Registrerad
Nov 2014

Jag gillar denna:

// Anledningar att skippa dirtycheck h?r? Ful l?sning men funkar....

Trädvy Permalänk
Medlem
Registrerad
Dec 2008

Trodde alltid att man körde något script som rensade och komprimerade koden innan den skickades till webbservern. Just för bandbredd, även om det bara är text är det många användare som laddar den.

Inte programmerare men det ser inte proffsigt ut sett till kommentarerna, mycket lösa boliner som behöver fixas till. Engelska uttryck tycker jag alltid fungerar bättre när man inte ska/får använda åäö. Typ gästnät blir gastnat, och då saknar man bara dödmans kista.

Blev iaf påmind om att deklarera.

Trädvy Permalänk
Medlem
Registrerad
Dec 2015

Det är mer eller mindre ett krav att svenska ska användas i programkod på statliga myndigheter. Tanken är att korrekta juridiska termer ska användas på alla nivåer, men när man väl kommer till implementation så är ju verkligheten ofta större än juridiken och då blir det lite av en soppa. "okKnapp" är ju inte direkt något som står i lagstiftningen.

Eftersom hela premissen med offentlig upphandling är att den som är billigast får göra jobbet så är det ju inte helt oväntat att resultatet ibland (för det mesta?) blir ruttet.

Trädvy Permalänk
Medlem
Plats
Sydney
Registrerad
Aug 2003
Skrivet av lillaankan_i_dammen:

Svågerpolitik heter det när man låter sin svåger få utföra jobbet före andra. Men vad heter det när tjänstemän låter deras barn i 10års åldern få jobbet?

Jag tror du överskattar medel-programmeraren. Med risk för att låta elitisk, (för det är jag väl) många som kallar sig programmerare har inget i fältet att göra. Dessvärre vet inte alla arbetsgivare bättre heller, och då betalar de för en undermålig tjänst, och resultaten ser vi här.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2013
Skrivet av jocke92:

Trodde alltid att man körde något script som rensade och komprimerade koden innan den skickades till webbservern. Just för bandbredd, även om det bara är text är det många användare som laddar den.

Inte programmerare men det ser inte proffsigt ut sett till kommentarerna, mycket lösa boliner som behöver fixas till. Engelska uttryck tycker jag alltid fungerar bättre när man inte ska/får använda åäö. Typ gästnät blir gastnat, och då saknar man bara dödmans kista.

Blev iaf påmind om att deklarera.

Precis, man kör en clean/minify/bundling av sina scriptfiler. Kommenterarer ska inte finnas i produktionsmiljö.

Trädvy Permalänk
Medlem
Registrerad
Jul 2005

Sanningen är att det är ganska vanligt med liknande kod även i produktion.
Men för en så stor tjänst är det inte så optimalt kan man tycka.

Minns quake 3 källkod med kommentaren i stilen
"// This code does dothing as far as i can tell, but unless it runs the following fuction call fail for some reason"

There are 10 types of people in the world: Those who understand binary, and those who don't...

Asus Maximus VIII Hero | i7-6700K | ASUS GeForce GTX1070 Strix 8GB | G.Skill F4-2133C15Q-32GRK |

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Aug 2003

I verkligheten, jämfört med skolan, är det större prio på att sakerna fungerar än att koden är snygg.

[Asus P5Q-E] [Q6600 G0 @ 3,6 ghz] [Scythe Yasya] [Gigabyte Gtx 460 1gb] [4x2 Gb Kingston HyperX PC8500] [OCZ ModXstream Pro 700 W ] [Crucial M4 128 gb ]
HTPC - AMD Athlon X2 5050e - M4N78-VM - Kingston HyperX 2 GB - Seagate 7200.12 1 TB - Seagate Green SATA III 2TB

Trädvy Permalänk
Medlem
Registrerad
Dec 2015
Skrivet av Red Beaver:

I verkligheten, jämfört med skolan, är det större prio på att sakerna fungerar än att koden är snygg.

Ful kod som fungerar perfekt behöver man ju inte röra. Tills kraven ändras. Eller tills man ska uppgradera/migrera systemet till en ny lösning. Båda sakerna tenderar att hända förr eller senare.

"Fungerar" bör alltså tolkas som "gör vad den ska enligt kraven (explicita/implicita) och är lätt att förvalta". Om det är uppfyllt är ful/snygg mest en smakfråga. Jag kodar inte JS, men jag tycker inte den där koden verkar vara jättelätt att förvalta.

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Aug 2003
Skrivet av KAD:

Ful kod som fungerar perfekt behöver man ju inte röra. Tills kraven ändras. Eller tills man ska uppgradera/migrera systemet till en ny lösning. Båda sakerna tenderar att hända förr eller senare.

"Fungerar" bör alltså tolkas som "gör vad den ska enligt kraven (explicita/implicita) och är lätt att förvalta". Om det är uppfyllt är ful/snygg mest en smakfråga. Jag kodar inte JS, men jag tycker inte den där koden verkar vara jättelätt att förvalta.

Det är säkert byggt av en konsultfirma, och om all kod skulle vara perfekt hade det antagligen blivit väldigt dyrt. Det är en balansgång.

[Asus P5Q-E] [Q6600 G0 @ 3,6 ghz] [Scythe Yasya] [Gigabyte Gtx 460 1gb] [4x2 Gb Kingston HyperX PC8500] [OCZ ModXstream Pro 700 W ] [Crucial M4 128 gb ]
HTPC - AMD Athlon X2 5050e - M4N78-VM - Kingston HyperX 2 GB - Seagate 7200.12 1 TB - Seagate Green SATA III 2TB

Trädvy Permalänk
Medlem
Registrerad
Aug 2002

Jo det är ju standard mer eller mindre överallt.

Där jag jobbar nu är den bästa kommentaren jag hittat i stil med ”Todo: det här blir fel, men borde fungera kortsiktigt. Måste lösas asap”. Den koden har rullat dagligen i 16 år nu

Trädvy Permalänk
Medlem
Registrerad
Jan 2011
Skrivet av BasseBaba:

Jo det är ju standard mer eller mindre överallt.

Där jag jobbar nu är den bästa kommentaren jag hittat i stil med ”Todo: det här blir fel, men borde fungera kortsiktigt. Måste lösas asap”. Den koden har rullat dagligen i 16 år nu

Jag har en del kommentarer i dom system jag jobbar med:

"Fixes bug XYZ, remove 2013". Koden ligger kvar, vågar inte ta bort den.

Det här var humor på hög nivå! Var exakt laddas skriptet in? Verkar väldigt skumt att dom inte kört detta i någon transpiler/checker etc för att minifiera koden och ta bort kommentarer osv.

Gamla trotjänaren:Asrock P67 Extreme 4 | i5 2500K@4.5Ghz | Asus GTX 970 black Överklockad | Samsung Evo 960 1TB, 2x WD blue 5TB | 8GB Corsair XMS3 + 8GB Hyper x Fury | EVGA Supernova G2 750W Gold | Silverstone FT02
Laptop: Dell XPS 13 2019
Mobil: Oneplus 6 128GB

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Sep 2010

Det är viktigt att man tänker sig för när man gör commits och hur man kommenterar dem, för det kommer synas i release om det står "Merged away from hell" och "Merged back to hell"

Trädvy Permalänk
Medlem
Plats
Norrköping
Registrerad
Jan 2011

Globals, globals everwhere.

Man mår rätt illa. Hoppas de inte betalade för mycket av mina surt förvärvade skattekronor för det där.

Trädvy Permalänk
Skribent
Jonas Klar
Plats
Skatteverkets Inläsningscentral
Registrerad
Aug 2008
Skrivet av Red Beaver:

Det är säkert byggt av en konsultfirma, och om all kod skulle vara perfekt hade det antagligen blivit väldigt dyrt. Det är en balansgång.

Myndigheter är ju kända för att snåla och ställa höga krav, eller hur var det nu...

Internet of Things. Translation: Anything that connects to the internet, no matter how useless nor how much of a security risk it poses.

Trädvy Permalänk
Entusiast
Testpilot
Plats
Göteborg
Registrerad
Aug 2011

Ja, man blir ju mörkrädd alltså. Ta bara den här funktionen, som du visade mig allra först, @lydell:

function onlyContainsNumSpace(theVal) { var whiteSpacePattern = /[\s\u00A0]/; if (theVal) { // Fint värde for (var n=0;n<theVal.length;n++) { var theCh = theVal.charAt(n); if ((theCh <= '9' && theCh >= '0') || (n == 0 && theCh == '-') || whiteSpacePattern.test(theCh)) { // Ok.... } else { return false; } } return true; } else { return false; } }

  • Hur är det möjligt att känna till regex och ändå skriva sådan kod?

  • Väldigt satsorienterad kod för ett problem jag uppfattar som uttrycksorienterat.

  • Varför är \u00A0 med i whitespacePattern? /\s/.test("\u00A0") === true. Kanske finns legacyskäl?

  • var? Legacyskäl, får man hoppas.

  • ==? Går väl inte ens att bortförklara med legacyskäl?

  • theCh <= '9' && theCh >= '0'

  • if (condition) { // Ok.... } else { return false; }

Tror att denna kod representerar samma funktion (åtminstone nära nog):

function onlyContainsNumSpaceByAlling(x) { return Boolean(x && (x.length === undefined || /^\-?[\d\s]*$/.test(x))); }

(Den märkliga kontrollen theVal.length === undefined fångar inputs som true, Infinity, -Infinity och {}. Man vet ju aldrig vilken den tänkta definitionsmängden är i JavaScript. Beroende på kravspecen/kontexten går det säkert att skriva en bättre lösning.)

Klicka för mer information

const TEST_CASES = [ null, undefined, true, false, 0, 5, NaN, Infinity, -Infinity, {}, [], "", " ", " ", "\u00a0", " \u00a0", "\u00a0 ", "-", "- ", " -", "5", "59", "5 9", "5 9 ", " 5 9 ", "-5", "-59", "-5 9 ", " -5 9 ", "\u00a06", "6\u00a0", ]; for (const t of TEST_CASES) { const expected = onlyContainsNumSpace(t); const actual = onlyContainsNumSpaceByAlling(t); if (expected !== actual) { console.error(t, "– expected:", expected, ", actual:", actual); } }

Visa mer

Skrivet med hjälp av Better SweClockers