Kod

Using reserved words is bad for your health

Att felsöka JavaScript kan vara lite klurigt. Det gäller som så ofta annars att ju dummare fråga, desto svårare att finna svaret. Dagens dumma fel bestod i ett JSON-objekt som hade en egenskap vid namn class. class är ett reserverat ord i Javascript.

Med vad ska man serialisera?

Idag skulle jag lägga till möjligheten att spara sökningar, och i förlängningen skapa bevakningar utifrån dessa sökningar. Den givna vägen att gå var att använda serialisering för att spara sökbojekten. Idén med serialisering är att man ska kunna spara undan ett objekt och sedan plocka fram det igen. Detta utan att objektet har förändrats. Ungefär som Stallone och Snipes i Demolition Man. I mitt fall handlar det om enstaka sökningar med allt vad de innehåller av avgränsningar, vilken söktjänst som är den primära, antalet returnerade träffar mm. Jag trodde serialisering av objekt var en enkel match i .NET. Det skulle visa sig vara lite svårare i realiteten.

Klona objekten på djupet i C#

Efter att lyckligt ovetandes levt med samma ICloneable-lösning en längre tid upptäckte jag nyligen att jag inte alls skapade den "djupa kopia" av mina objekt som (eng. deep copy) jag trott. I sökhistoriken till den söklösning vi bygger nu så ska sökfråge-objekt kopieras. Dessa har en del non-value-types som pekade mot samma objekt när man gjorde grunda kopior.

Efter lite sökande upptäckte jag att Microsoft avrått från ICloneable sedan 2003. Det var nog då jag började skriva i C#.

Subscribe to Kod