Du code valide mais aussi respectueux de standards,
sans efforts, c'est possible !
Pour mieux collaborer ou simplement être plus efficace,
les linters sont tes amis…
FEWEB - DEBUG FRONT-END - MARS 2017
Me
Thierry MICHEL, belge, plus tout jeune,
presque 20 ans de web…
Après quelques années comme formateur,
je suis de retour IRL
pour dresser des pixels chez
EPIC,
une valeureuse agence digitale
et créative !
([]+/H/)[1&11>>1]+(+[[]+(1-~1<<1)+(~1+1e1)+(1%11)+(1|1>>1|1)+(~1+1e1)+(.1^!1)])[[([]+!![
11])[11^11]+[[{}]+{}][1/1.1&1][1]]+([[]+111/!1][+!1][([{}]+{})[1e1>>1]+[[],[]+{}][1&11>>
1][1|[]]+([]+[][111])[1&1]+[{},1e1,!1+{}][~~(1.1+1.1)][1^1<<1]+(11/!{}+{})[1-~1<<1]+[!!{
}+[]][+(11>11)][[]+1]+(/^/[1.11]+/&/)[.1^!1]+[{},[{}]+{},1][1&11>>1][1+1e1+1]+([]+!!{})[
.1^!1]+([]+{}+[])[[]+1]+[!!{}+{}][!11+!111][[]+1]]+[])[(!/~/+{})[1|1<<1]+[/=/,[]+[][1]][
1&11>>1][1&1>>1]+([]+{})[~~(1.1+1.1)]+[1,!1+{}][1%11][1^1<<1]+(111/[]+/1/)[~1+1e1+~1]+[!
!/-/+[]][+(11>11)][1]]((1<<1^11)+((+(1<1))==([]+/-/[(!![11]+[])[+!1]+(!!/-/+{})[1-~1]+([
]+!/~/)[1-~1]+(!!/-/+{})[!111+!111]])[11%11]),-~11>>1)](~1-~1e1<<1<<1)+([]+{111:1111}+[]
)[11111.1%11.1*111e11|!11]+({}+/W/)[1+~1e1-(~11*1.1<<1)]+(+[[]+(1|1>>1)+(1|1>>1|1)+(11-1
>>1)+(1e1>>1|1)+(1e1>>1)+(1>>11)+(11>>>1)])[[(!!{}+[])[11>>>11]+[[]+{}][.1^!1][111%11]]+
([11/[]+[]][111%111][([{}]+[{}])[1e1>>1]+[[],[{}]+[{}]][1|1>>1|1][1|[]]+([][11]+[])[[]+1
]+[{},1e1,![1]+/~/][1<<!1<<1][1<<1^1]+(1/!1+{})[11+1>>1]+[!!/-/+{}][+(111>111)][111%11]+
([][11]+/&/)[1&1>>1]+[{},[]+{}+[],1][[]+1][11-~1+11>>1]+([]+!!/-/)[11>>11]+([]+{})[1|1>>
1|1]+[[]+!!{}][1>>>1][1&11]]+[])[(!{}+[])[1^1<<1]+[/=/,[]+[][1]][1<<1>>1][!111+!111]+([]
+{}+[])[1<<1^1>>1]+[1,![11]+[]][1|1>>1][1|1<<1|1]+(11/[]+/1/)[-~11>>1]+[!![111]+{}][+[]]
[1|1>>1]]((1e1-1)+((1&1>>1)==([]+/-/[(!!{}+{})[+(1>1)]+(!!/-/+{})[1|1<<1]+(!1+{})[1|1<<1
|1]+(!!/-/+{})[11.11>>11.11]])[1&1>>1]),1-~1<<1)](~1-~1e1<<1<<1)+(/^!/+[])[1+!![11%111]]
console.log('Hello World')
'3' + 1 // '31'
'3' - 1 // 2
'222' - -'111' // '333' (⊙﹏⊙)
function laugh()
{
return
{
haha: "ha!"
}
}
laugh() // should I laugh or … undefined? (>__<)
wtfjs.com
18 pouces, la distance moyenne
entre un écran et son utilisateur…
Problem Exists Between Keyboard And Chair
PEBKAC
Problem In Chair, Not In Computer
PICNIC
ID-10T error
De l'anglais lint : “touffe hirsute”
(ou peluche, bouloche)
De l'anglais lint : “touffe hirsute”
(ou peluche, bouloche).
Un des premiers outils d'analyse statique de code source en langage C.
L'analyse statique, à la différence du débogage, permet d'obtenir des informations sur le fonctionnement d'un programme lors de son exécution sans réellement l'exécuter.
- Erreurs de syntaxe
- Erreurs de conception
- Erreurs de style
Certes, mais pas que !
Pré-débogage, code review, pair programming, utilisation ou contribution à des projets open source, maintenabilité, qualité, évolutivité, …
Approfondir sa maîtrise des langages.
Des linters pour presque tous les languages.
Et plusieurs linters pour un même language !
1. Installer le linter qui sera accessible
via la ligne de commande.
npm i -D eslint
Sous forme de package npm, de gem Ruby, d'extension Pearl, etc…
2. Créer une configuration ou
récupérer / modifier une existante.
.eslintrc.json
Plusieurs projets ou communautés partagent leurs guidelines ou "coding standards"
(Airbnb, Google, WordPress, Drupal, The Guardian, …)
1. Dès que vous commencez à coder, dans votre éditeur !
2. Avant de déployer, via votre workflow.
gulp, npm scripts, webpack, CI, …
- Intégration éditeur + workflow
- Documentation (+ messages d'erreurs)
- Configuration(s)
- Possibilités de désactivation
Thanks
Merci de votre attention !
… et rendez-vous au bar 🍻