tech talk on code quality
TRANSCRIPT
![Page 1: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/1.jpg)
Code quality.
![Page 2: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/2.jpg)
Why code quality?
![Page 3: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/3.jpg)
![Page 4: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/4.jpg)
Development team• Velocity
Product
• Bugs count• Time to fix• Performance• Security
Software Engineer
• Personal comfort• Motivation
Why it matters?
![Page 5: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/5.jpg)
Average mood
![Page 6: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/6.jpg)
understandabilityis what we need.
![Page 7: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/7.jpg)
What we can do?
• Write better new code
• Improve existing code
![Page 8: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/8.jpg)
print(“Hello World!”)cut.
do not increase.
![Page 9: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/9.jpg)
Program size
• Function size
• Class size
• File size
• Package size
cut.do not increase.
![Page 10: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/10.jpg)
Code style
style #1
var result = [];
for (var i = 0; i < l; i += 1) {
if (i % 2) {
result.push(data[i]);
}
}
style #2
data.filter(filters.modal)
![Page 11: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/11.jpg)
Unclear responsibility
function hakuna_matata(a, b, next) {
if (!b) {
return a;
}
if (!a && !next) {
return b;
}
return “Hakuna matata!”;
}
![Page 12: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/12.jpg)
Architectural issues
![Page 13: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/13.jpg)
Why it happens?qualification, dude.
![Page 14: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/14.jpg)
We don’t do what is needed!
![Page 15: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/15.jpg)
What was estimated
![Page 16: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/16.jpg)
What we wanna built
![Page 17: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/17.jpg)
What we have done
![Page 18: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/18.jpg)
Manage your time.
![Page 19: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/19.jpg)
Improve existing code.80 - 20
Pareto principle.
![Page 20: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/20.jpg)
Measure!
![Page 21: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/21.jpg)
Lines of code - LOC
for (i = 0; i < 100; i++) printf("hello"); /* How many lines of code is this? */
Logical lines of code - LLOC
/* Now how many lines of code is this? */
for (i = 0; i < 100; i++)
{
printf("hello");
}
Number of lines of code
![Page 22: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/22.jpg)
Simple code
function sayHello() {
print(“Hello”)
}
Difficult code
function say(message) {
if (!message) {
return false;
}
if (message == “Hello”) {
print(“Hello World!”);
return;
}
message && print(message);
}
Cyclomatic complexity
![Page 23: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/23.jpg)
Difficult code
function say(message) {
if (!message) {
return false;
}
if (message == “Hello”) {
print(“Hello World!”)
return;
}
print(message)
}
✓ 3 tests passed
100% coverage
say() == false
say(“Hello”) == “Hello World!”
say(“Text”) && output == “Text”
Code coverage
![Page 24: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/24.jpg)
Other metrics• Cohesion• Coupling• Connascence• DSQI• Maintainability index• Comment density• Halstead complexity• Number of classes• Number of parameters• Number of dependencies• Execution time• Load time…
![Page 25: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/25.jpg)
SonarQube
Plato
Code analysis platforms
![Page 26: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/26.jpg)
node install complexity-report
LLOC Complexity Density
5440 703 13 %
5864 1448 25 %
11739 2132 18 %
965 275 28 %
Metrics example
![Page 27: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/27.jpg)
Metrics example #2
![Page 28: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/28.jpg)
git log --name-only -- *.js | grep .js | sort | uniq -c | sort -n
git diff --stat `git rev-list HEAD | tail -n 1` HEAD | grep .js | awk '{ print $3 " "$4 " "
$1}' | sort -n
Version control system
![Page 29: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/29.jpg)
Let’s make our life better!that’s all.
![Page 30: Tech talk on code quality](https://reader033.vdocuments.net/reader033/viewer/2022051414/55c6871abb61eb81118b46cd/html5/thumbnails/30.jpg)
Average mood