“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.”
– Bill Gates
This discussion of SLOC, or, source line of code (which is also known as lines of code, or, LOC) — is a measure of the number of lines of the program’s source code. It is also an answer to a question on Quora and is part of our ebook on code quality metrics.
There are at least two different measures of SLOC:
The “physical” SLOC. That’s the total number of lines in the source code. The “logical” SLOC. That’s the number of lines that will be executed.
Intuitively, all developers understand that the higher the SLOC, the larger the number of potential bugs, the higher the maintenance costs, the efforts to develop new features, and so on. The problem is that it’s not possible to standardize or benchmark this metric in any meaningful way: a change in SLOC in itself says nothing about code quality, or developer productivity. To make matter worse, and despite the simplicity of its de nition, there is no consensus on how to measure SLOC. So different static analysis tools will provide different values. Developers therefore cannot use it to make comparisons or draw conclusions.
Although we’re not big fans of SLOC as a standalone metric, if you have to use it, then use the “logical” SLOC. Another practice which we nd useful
is to standardize SLOC by measuring SLOC per le (or per class). When the SLOC per le is far from the average, this is often a ag that something has to be reviewed.
What other metrics should you follow?
I personally think that a much better metric to express productivity is through number of PRs merged or the average time to close of PRs produced by a developer.
There are of course many other traditional metrics that you can track and follow like Cyclomatic complexity, Code churn, Code coverage, Code duplication, etc
If you’re curious about code quality metrics, you can read more about them on our ebook:
Codacy is used by thousands of developers to analyze billions of lines of code every day!
Getting started is easy – and free! Just use your GitHub, Bitbucket or Google account to sign up.