Visa ett inlägg
Oläst 2016-08-23, 10:02 #34
webtigerteam webtigerteam är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2016
Inlägg: 30
webtigerteam webtigerteam är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2016
Inlägg: 30
Citat:
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?
Moduler cachas i NodeJS. Och lokala variabler går ofta lite fortare att hämta! Men även om det gjorde koden segare så är det onödigt att optimera utan att mäta först!


Citat:
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.
Det bästa är if(foo === undefined || foo === null)

Det näst bästa är if(foo == undefined)

Men det sämsta är if(!foo) för att det finns för många "false-positive", det skulle även trigga false, noll, strängen noll, tom sträng, tom array, eller array med noll, vilket ibland är ett godtagbart värde.

Du har rätt i att undefined ofta tyder på en bugg ...

Ta följande kod som exempel:

Kod:
function test(a, b) {
	console.log(a + b);
}
test(1);
Lintern klagar på följande:

1:1 - Expected a function expression.
1:1 - Missing JSDoc comment.
1:1 - Use the global form of 'use strict'.
1:14 - Missing space before function parentheses.
1:15 - Identifier name 'a' is too short (< 2).
1:18 - Identifier name 'b' is too short (< 2).
1:21 - Block must be padded by blank lines.
2:2 - Expected indentation of 4 space characters but found 0.
2:2 - Unexpected console statement.
3:1 - Block must be padded by blank lines.
4:2 - Newline required at end of file but not found.
4:6 - No magic number: 1. (no-magic-numbers)


OMG! 12 fel!! Bäst att fixa dem ...


Kod:
"use strict";

var ett = 1;

/**
 * Plussa två tal
 * @param {number} tal1 - Första talet.
 * @param {number} tal2 - Andra talet.
 * @returns {number} Summan av de två talen
 */
var test = function test (tal1, tal2) {

    return tal1 + tal2;
	
};

test(ett);

Men ända felet med första koden är att vi hade glömt andra argumentet (b), vilket är en ganska vanlig orsak till buggar. Felet kvarstår dock efter att vi fixat alla "fel" som Lintern hittade.

Här har du ett exempel på varför jag jämför med undefined:

Kod:
if(arg1 == undefined) throw new Error("arg1=" + arg1 + " saknas!")

Jag rekommenderar denna video: https://www.youtube.com/watch?v=wf-BqAjZb8M (Raymond Hettinger - Beyond PEP 8 -- Best practices for beautiful intelligible code - PyCon 2015)

Senast redigerad av webtigerteam den 2016-08-23 klockan 10:06
webtigerteam är inte uppkopplad   Svara med citatSvara med citat