SlideShare a Scribd company logo
1 of 27
Nov 20-21, 2020Sofia
const title = `Clean JavaScript Code: An Oxymoron?`;
const speakerInfo = {
name: ’Lyubomir Bozhinov’,
title: ‘Lead Software Engineer’
company: ‘EPAM’
other: `Lead Software Engineer. Author. Speaker. But most
importantly, a tinkerer at heart, who believes one
should always leave the code better than they found it - and
apply the same to everything.`
};
Nov 20-21, 2020
Thanks to our Sponsors:
General Sponsor:
Trusted Sponsor:
Innovation Sponsor:
Silver Sponsor:
Gold Sponsors:
Platinum Sponsors:
Bronze Sponsors:
Technology Partners:
Nov 20-21, 2020
About me
So, yeah, I write code for a living.
Nov 20-21, 2020
About me
Sometimes it’s good.
Nov 20-21, 2020
Intro
We all know the jokes…
Nov 20-21, 2020
Intro
Recipe for an epic night and a terrible morning.
Nov 20-21, 2020
The Main Idea
There are always trade-offs.
Nov 20-21, 2020
Disclaimer #0: A Good Talk
We have time for one. Let’s see which! ;D
Nov 20-21, 2020
Disclaimer #1: !Refactoring
We won’t talk about refactoring - that’s a tale for another time.
Nov 20-21, 2020
The Main Question
What does clean JavaScript code actually
mean?
Nov 20-21, 2020
Hint, Lint, Prettier?
v
+
Nov 20-21, 2020
ES6+ only?
Just don’t use vars. Please.
Nov 20-21, 2020
Names Matter
firstNum
second_num
ThirdNum
fourth-num
FiFThnUM
Nov 20-21, 2020
Abbreviate!
• KISS
• DRY/DIE
• YAGNI
• SOLID
Nov 20-21, 2020
Patterns
You need to know your Factories and Singletons!
Nov 20-21, 2020
The ‘Perfect Architecture'
But we all know that such a thing doesn’t exist, don’t we?
Nov 20-21, 2020
Testing!
Does a hundred percent test coverage make your code clean?
Yes and no.
Nov 20-21, 2020
Reviewing Code
How many devs does it take to merge a PR?
No joke, just asking.
Nov 20-21, 2020
CI/CD
Two out of these three make the process fun.
Guess which one is the Impostor.
Nov 20-21, 2020
Commit Hooks
Husky is an easy and powerful way to use .git hooks
to improve code quality.
Nov 20-21, 2020
More SCA Is Better, Right?
Everything that makes it easier to write
cleaner and safer code is welcome on our list.
Nov 20-21, 2020
Holy TypeScript!
Types are great! And we sure need them in the JS universe!
Nov 20-21, 2020
Compile, Compile, Compile!
Want to eliminate runtime errors? Use one of these.
Nov 20-21, 2020
The (Final?) Checklist
• Linting
• Prettier
• ES6+ only
• Consistent naming
• Fundamentals (e.g., SOLID)
• Design patterns
• Good architecture
• Testing!
• Code Reviews
• CI/CD
• .git hooks
• Static code analysis
• TypeScript
• Compiled framework
Nov 20-21, 2020
Disclaimer #2
The important thing is to never stop tinkering.
Nov 20-21, 2020
The WHY of This Talk
Tell me of a better way to measure how clean code is.
Nov 20-21, 2020
Thank you!
LinkedIn: https://www.linkedin.com/in/lyubomir-bozhinov/
Twitter: https://twitter.com/TheElegantDev

More Related Content

Similar to Clean JavaScript Code Checklist

Dev Wars - iOS vs Android vs Titanium
Dev Wars - iOS vs Android vs TitaniumDev Wars - iOS vs Android vs Titanium
Dev Wars - iOS vs Android vs TitaniumVivochaLabs
 
NodeWay in my project & sails.js
NodeWay in my project & sails.jsNodeWay in my project & sails.js
NodeWay in my project & sails.jsDmytro Ovcharenko
 
JVM Conference - The Battle of the IDEs
JVM Conference - The Battle of the IDEsJVM Conference - The Battle of the IDEs
JVM Conference - The Battle of the IDEsKo Turk
 
"The Battle of the IDEs"
"The Battle of the IDEs""The Battle of the IDEs"
"The Battle of the IDEs"Ko Turk
 
Be Mean To Your Code: Rugged Development & You
Be Mean To Your Code: Rugged Development & YouBe Mean To Your Code: Rugged Development & You
Be Mean To Your Code: Rugged Development & YouJames Wickett
 
"Generating Types without climbing a tree", Matteo Collina
"Generating Types without climbing a tree", Matteo Collina "Generating Types without climbing a tree", Matteo Collina
"Generating Types without climbing a tree", Matteo Collina Fwdays
 
Artificial Intelligence (AI) DAOs (decentralized autonomous organizations) - ...
Artificial Intelligence (AI) DAOs (decentralized autonomous organizations) - ...Artificial Intelligence (AI) DAOs (decentralized autonomous organizations) - ...
Artificial Intelligence (AI) DAOs (decentralized autonomous organizations) - ...BigchainDB
 
DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018Cyrille Martraire
 
Clean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code CampClean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code CampTheo Jungeblut
 
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summary
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summaryGordon Kraft Response - Apr 1998 - Artificial inc discussions panel summary
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summaryGordon Kraft
 
Creative Coding to Inspire
Creative Coding to InspireCreative Coding to Inspire
Creative Coding to Inspire🐦 Ann Kilzer
 
DockerCon14 Contributing to Docker by Tianon
DockerCon14 Contributing to Docker by TianonDockerCon14 Contributing to Docker by Tianon
DockerCon14 Contributing to Docker by TianonDocker, Inc.
 
Microsoft Bot Framework: Hiking up the Trail of Automation
Microsoft Bot Framework: Hiking up the Trail of AutomationMicrosoft Bot Framework: Hiking up the Trail of Automation
Microsoft Bot Framework: Hiking up the Trail of AutomationDavid Hauck
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkTaming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkJoseph Yoder
 
Javascript Animation with Canvas - Gregory Starr 2015
Javascript Animation with Canvas - Gregory Starr 2015Javascript Animation with Canvas - Gregory Starr 2015
Javascript Animation with Canvas - Gregory Starr 2015Gregory Starr
 
Bridging the gap between designers and developers at theguardian.com
Bridging the gap between designers and developers at theguardian.comBridging the gap between designers and developers at theguardian.com
Bridging the gap between designers and developers at theguardian.comKaelig Deloumeau-Prigent
 
SocialCaddy: "Clash of the Titans: Erlang Clusters and Google AppEngine"
SocialCaddy: "Clash of the Titans: Erlang Clusters  and Google AppEngine"SocialCaddy: "Clash of the Titans: Erlang Clusters  and Google AppEngine"
SocialCaddy: "Clash of the Titans: Erlang Clusters and Google AppEngine"SocialCaddy
 
Geecon walking in CODE
Geecon walking in CODEGeecon walking in CODE
Geecon walking in CODEJarek Ratajski
 

Similar to Clean JavaScript Code Checklist (20)

Dev Wars - iOS vs Android vs Titanium
Dev Wars - iOS vs Android vs TitaniumDev Wars - iOS vs Android vs Titanium
Dev Wars - iOS vs Android vs Titanium
 
NodeWay in my project & sails.js
NodeWay in my project & sails.jsNodeWay in my project & sails.js
NodeWay in my project & sails.js
 
JVM Conference - The Battle of the IDEs
JVM Conference - The Battle of the IDEsJVM Conference - The Battle of the IDEs
JVM Conference - The Battle of the IDEs
 
Spmc vs kodi
Spmc vs kodiSpmc vs kodi
Spmc vs kodi
 
"The Battle of the IDEs"
"The Battle of the IDEs""The Battle of the IDEs"
"The Battle of the IDEs"
 
Code review drinking game
Code review drinking gameCode review drinking game
Code review drinking game
 
Be Mean To Your Code: Rugged Development & You
Be Mean To Your Code: Rugged Development & YouBe Mean To Your Code: Rugged Development & You
Be Mean To Your Code: Rugged Development & You
 
"Generating Types without climbing a tree", Matteo Collina
"Generating Types without climbing a tree", Matteo Collina "Generating Types without climbing a tree", Matteo Collina
"Generating Types without climbing a tree", Matteo Collina
 
Artificial Intelligence (AI) DAOs (decentralized autonomous organizations) - ...
Artificial Intelligence (AI) DAOs (decentralized autonomous organizations) - ...Artificial Intelligence (AI) DAOs (decentralized autonomous organizations) - ...
Artificial Intelligence (AI) DAOs (decentralized autonomous organizations) - ...
 
DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018
 
Clean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code CampClean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code Camp
 
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summary
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summaryGordon Kraft Response - Apr 1998 - Artificial inc discussions panel summary
Gordon Kraft Response - Apr 1998 - Artificial inc discussions panel summary
 
Creative Coding to Inspire
Creative Coding to InspireCreative Coding to Inspire
Creative Coding to Inspire
 
DockerCon14 Contributing to Docker by Tianon
DockerCon14 Contributing to Docker by TianonDockerCon14 Contributing to Docker by Tianon
DockerCon14 Contributing to Docker by Tianon
 
Microsoft Bot Framework: Hiking up the Trail of Automation
Microsoft Bot Framework: Hiking up the Trail of AutomationMicrosoft Bot Framework: Hiking up the Trail of Automation
Microsoft Bot Framework: Hiking up the Trail of Automation
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkTaming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
 
Javascript Animation with Canvas - Gregory Starr 2015
Javascript Animation with Canvas - Gregory Starr 2015Javascript Animation with Canvas - Gregory Starr 2015
Javascript Animation with Canvas - Gregory Starr 2015
 
Bridging the gap between designers and developers at theguardian.com
Bridging the gap between designers and developers at theguardian.comBridging the gap between designers and developers at theguardian.com
Bridging the gap between designers and developers at theguardian.com
 
SocialCaddy: "Clash of the Titans: Erlang Clusters and Google AppEngine"
SocialCaddy: "Clash of the Titans: Erlang Clusters  and Google AppEngine"SocialCaddy: "Clash of the Titans: Erlang Clusters  and Google AppEngine"
SocialCaddy: "Clash of the Titans: Erlang Clusters and Google AppEngine"
 
Geecon walking in CODE
Geecon walking in CODEGeecon walking in CODE
Geecon walking in CODE
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 

Recently uploaded (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 

Clean JavaScript Code Checklist