Visa ett inlägg
Oläst 2016-08-22, 17:44 #32
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Citat:
Ursprungligen postat av webtigerteam Visa inlägg
En linter kan vara bra om man arbetar i ett team, och kommit överens om att koden ska se ut på ett speciellt sätt.
Nej, de primära syftet är att hitta kod som rent semantiskt är rätt, alltså där kompilatorn säger ok, men där chansen är stor att du och interpretatorn har delade meningar. Te.x semikolon och den icke-determinism som avsaknaden kan innebära.

Citat:
Ursprungligen postat av webtigerteam Visa inlägg
Jag tycker dock det läggs allt för mycket tid på meta-programmering, till exempel omstrukturering av koden för att hålla raderna under 80 tecken, vilket ibland kan kräva kluriga lösningar som gör koden svårare att förstå.
Meta-programmering har inget med struktur att göra.

Förstår du de statistiska sambandet mellan buggar och kodkomplexitet?

Citat:
Ursprungligen postat av webtigerteam Visa inlägg
importering i headern uppmanar till att använda globala variabler! Jag försöker undvika globala variabler så långt som möjligt.
Nej. Importering av extern kod i de flesta Javascript-JIT är blockerande. Gör du en import mitt i koden så blockar detta hela eventloopen och då även gränssnittet.

För att inte nämna de optimeringsproblem din JIT utsätts för när kod med sidoeffekter laddas in under körning. Har du te.x koll på hur icke-deterministisk kod påverkar din prestanda?

Citat:
Ursprungligen postat av webtigerteam Visa inlägg
En unik grej med modul-systemet common-js är att man kan importera moduler lokalt!! Koden blir så mycket lättare att förstå då.
Så vitt jag vet så tillåter alla importeringssystem detta.

Citat:
Ursprungligen postat av webtigerteam Visa inlägg
'==' istället för '===' ... Om jag skulle skriva if(foo===undefined) skulle jag även behöva lägga till if(foo===null). Så det är lite av en bekvämlighet, jag fångar två flugor i en smäll.
I de fallet är `if(foo)` att rekommendera. Att du försöker jämföra med undefined och null tyder på att du har andra, mer fundamentala problem, i din implementering. Fråga dig själv varför dessa världen introducerades från första början- Odefinderade världen representerar ett odefinerat tillstånd, alltså en bugg.

Citat:
Ursprungligen postat av webtigerteam Visa inlägg
Man bör dock undvika att jämföra olika typer. Ex: if("42"==42) . Men vad hjälper det om det blir false i stället för true !? Eventuella buggar kvarstår ändå. Man bör i stället konvertera alla nummer till den typ man vill ha. Ex: var age=parseInt(request.form.age) för att vara på den säkra sidan.
Tvetydlig kod är vad som skapar buggar (och i de här fallet även prestandaproblem). På samma vis som `==` operatorn inte ska användas så ska `++` inte användas.

Om vi bortsätt från koden du postade så är de största misstaget du gör att tro att du är smartare än miljön du befinner dig i. För att kunna avgöra huruvida felen lintern påpekade är värt att fixa eller ej så behöver du grundläggande kunskap inom bl.a beräkningsmodeller, kompilatorer, typsystem, matematisk statistik och miljön koden ska köras i, te.x Googles V8-motor.

Varför inte bygga upp nödvändig kunskap parallellt och förlita dig på de verktyg som finns?

Citat:
Ursprungligen postat av jayzee Visa inlägg
Lycka till att hitta sånt till ett otypat och direkt tolkat programmeringsspråk.
Lint/hint är bara ämnade för kodkvalité.
FlowType (https://flowtype.org/) hjälper till med de här. Den kan, utan annoteringar, härleda typer och fel i din kod. Te.x `function(x) {x.length}(null) // => Error: null is not a string;

Senast redigerad av Nerix den 2016-08-22 klockan 17:47
Nerix är inte uppkopplad   Svara med citatSvara med citat