webForumDet fria alternativet

Vikten av parenteser

Småprat

15 svar · 890 visningar · startad av tydal

Medlem sedan juni 20034 013 inlägg
Frågan#1

"Men det var bara en parentes", sa alltid Rufus, svenskläraren på högstadiet, när han berättat någon episod ur sitt liv som kanske inte alla gånger hade med ämnet att göra, men som alltid var intressant eftersom han var bra på att berätta historier. Han kunde bjuda på sig själv, vilket inte alla vill göra med samma entusiasm.

För någon vecka sedan när jag skulle ta tåget hem möttes jag av två konduktörer, vilket hör till ovanligheterna på ett tåg med bara tre vagnar. Extrakonduktören kände jag inte igen, men det visade sig ganska snart att det var hennes första dag och att hon egentligen inte skulle varit där.

Man blir ju lätt lite nervös första dagen och det är alltid något som brukar gå fel den dagen. Det är liksom tradition på nåt vis. Men hon hade klarat sig bra. Ända tills arbetsdagen officiellt tog slut. Hon hann inte kliva av tåget innan det åkte vidare, avslöjade den ordinarie konduktören.

"Men du lovade ju att inte berätta det för någon!", utbrast hon.

Jag snackade lite allmänt med dem båda på vägen hem. Väl framme klev jag och extrakonduktören av eftersom hon också bor i Västerås. Den andre konduktören fortsatte med tåget. När tåget åkt iväg frågade hon mig: "Är han alltid så där taskig?"

Jag sa att vi alla gör misstag ibland, i synnerhet när det är första dagen, och så fortsatte jag med att berätta om min första dag när jag på grund av en miss försenade 100 pendlare i 20 minuter. Så hennes tabbe var inte så farlig eftersom den inte drabbade någon annan. Även om det känns surt när det händer så kan man ju skratta åt det sen.

Men det är av misstagen man lär sig. Och idag lärde jag mig något. Jag skulle ta bort några poster ur en databas, men eftersom jag är lat orkade jag inte räkna upp id-numrena utan i stället utformade jag ett villkor som bara stämde in på de nio poster som skulle bort.

DELETE FROM tag WHERE personal = 'tm' AND ortID = 883 AND turNr = 3980 AND dag = 'l' OR dag = 's';

Jag tryckte enter, det rasslade till och jag fick svaret: "2892 rows affected."

Vad 17? Det var ju bara nio rader jag skulle ta bort... uh oh...

Jag insåg mitt misstag ganska snabbt. OR har ju högre prioritet och jag hade därmed tömt systemet på alla tåg som går söndagar. Så här skulle jag ha skrivit:

DELETE FROM tag WHERE personal = 'tm' AND ortID = 883 AND turNr = 3980 AND (dag = 'l' OR dag = 's');

De annars så betydelselösa parenteserna gjorde hela skillnaden.

Lyckligtvis hade jag backup, så det fixade ju sig ganska smidigt, men tänk så lätt det går att ställa till med något när man inte har tungan i rätt mun...

Men det var bara en parentes.

Medlem sedan maj 20018 027 inlägg
#2

Re: Vikten av parenteser

tydal skrev:

Lyckligtvis hade jag backup, så det fixade ju sig ganska smidigt

Annars är det ju bara att göra en rollback. För du slutförde väl inte transaktionen när du såg hur många rader som påverkades?

Medlem sedan maj 20012 237 inlägg
#3

Tydal:

För att vara på den säkra sidan så kör alltid en select query *INNAN* en delete. Har du ett fel så ser du det då. :)

Frågan ändras ju inte förutom att du skriver SELECT * eller COUNT(*) istället för DELETE....

Medlem sedan juni 20008 205 inlägg
#4

Ack ja, hur många timmar (dagar?) har man inte spenderat med att kriga mot sin kod bara för att inse att man minns fel på operatorprioritet? Numera ser alla mina program ut som LISP - en parentes för mycket skadar aldrig.

Medlem sedan maj 20012 237 inlägg
#5

Har inte nån sagt: "Är du inte säker, så sätt parentes" ?

Medlem sedan juni 20008 205 inlägg
#6

spangos tillägg till den regeln: Är du däremot säker, lägg ändå till en parentes. ;)

Medlem sedan maj 20012 237 inlägg
#7

int ejobbigt = ((((2 + 2) + 2) + 2) + 2)

(observera det geniala variabelnamnet)

Medlem sedan juni 200032 967 inlägg
#8

jme skrev:

int ejobbigt = ((((2 + 2) + 2) + 2) + 2)

(observera det geniala variabelnamnet)

Helt genialt! :e

Medlem sedan sep. 20011 086 inlägg
#9

int eannujobbigare = (((((2) + (2)) + (2)) + (2)) + (2))

Medlem sedan maj 20012 237 inlägg
#10

copycat! :e

Medlem sedan sep. 20011 086 inlägg
#11

jme skrev:

copycat! :e

Hmm, bara för att du skrev före mig, behöver väl inte det betyda att du inte kopierade mig? :moose

Medlem sedan maj 20012 237 inlägg
#12

pimme: Det var ju från din kod jag snodde det där. §e

Medlem sedan sep. 20011 086 inlägg
#13

jme skrev:

pimme: Det var ju från din kod jag snodde det där. §e

:f

Medlem sedan juni 200032 967 inlägg
#14

För att återanknyta till topic; hur mycket väger egentligen en parentes?

Medlem sedan juni 20019 024 inlägg
#15

Vikten av komma-tecken är ännu viktigare:

Jämför:

Hänges ej, benådad med Hänges, ej benådad.

Medlem sedan maj 20018 027 inlägg
#16

@nders skrev:

För att återanknyta till topic; hur mycket väger egentligen en parentes?

Somliga envisas med att kalla filstorlekar för "vikter". Då skulle ett svar kunna vara att parentesen "väger" en byte.

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)