AT&T, a US-based telecom company, faced a major crisis in 1990. They wanted to speed up long-distance calls, leading them to release a complex software upgrade. But this project failed, and their long-distance network faced around nine hours of downtime.
The estimated costs in damage of this downtime included $60 million in long-distance charges; 200,000 lost airline reservations; and 75 million missed phone calls. Later, they found that the software upgrade contained one line of buggy code, leading to cascading switch failures that ultimately snowballed into a huge problem.
Just one line of poorly written code can drive an enterprise into the ground, meaning that your projects can also come to an end because of them. That’s why improving your code quality is necessary. Here are four best practices to help produce high-quality code.
1. Embrace coding conventions
Development teams usually create a list of guidelines known as coding conventions. They include the recommended styles and practices for a certain programming language. Sometimes, teams establish conventions for only a particular project, and other times, they write them for the entire organization.
Using a coding convention encourages everyone to write in the same style, which means your coworkers can better understand your code. Conventions can also help you find the files and classes in a large project, so developers that are new to the code can find and work with them easily. For example, Java developers use camel case for their naming conventions, where the first word is lowercased and subsequent words are capitalized – “employeeLastName.”
Coding conventions dictate a wide range of things, such as:
- naming conventions
- spaces
- operators
- declarations
- comments
- indentation
- file organization
- architectural patterns
2. Use a code linter
A code linter is a tool that automatically checks your code to see if it meets your project’s or company’s coding convention. If it doesn’t match the convention, linters will show these errors as warnings.
During software development, these warnings tend to get overlooked when developers prioritize speed over quality. But these small errors can accumulate fast in a short amount of time, leading to a significant workload for your team. To avoid these hefty workloads, linters identify these errors quickly so that your team can resolve them quickly, too.
Which linter should you use?
The type of linter you use depends on the programming language you use – Java, C#, Python, etc. For example, a Python developer could use Pylint for code analysis and maintaining code quality. Other examples of linters include JSLint, ESLint, and Checkstyle.
3. Adopt continuous integration
Developers merge their changes to the main branch several times a day – this process is called continuous integration (CI). Each merge launches an automated code build and test sequence, which take a moment to run. But if there’s an error, the code build doesn’t run, and the CI system prevents it from advancing to the next step. The team then gets a report and can fix the error immediately.
This is why CI is used widely by modern companies. It allows teams to break down the development process into small sections, which ensures greater attention to detail. And developers get instant feedback so that they can prevent any errors from creeping in during the deployment phase.
Some CI tools on the market include Jenkins, Bitbucket Pipelines, CircleCI, and Atlassian Bamboo.
What’s the best tool for your company?
A modern continuous integration tool is critical to enabling a high-performance engineering team. When choosing a CI tool for your team, there are important factors to consider, such as VCS support, container support, and plugins and integrations. Check out this page for a comparison of tools.
4. Leave helpful comments
Developers sometimes make comments that aren’t necessary to understand the code. This kind of clutter can result in developers taking extra time to read through the code. On the flip side, there are those who make too few comments, which makes for low-quality code because programmers have to guess at what they’re reading.
Your goal should be to find a happy medium. Add comments only when you feel they have some merit and can provide value to your codebase. The following guidelines can help you write meaningful comments:
- Write comments for complex functions. Add comments to functions that have complex logic, such as one that has 100 lines of code. These comments are basically shortcuts that explain what your function is supposed to do, so they save other programmers time from trying to figure it out.
- Write a brief comment at the top of each file. This type of comment shouldn’t exceed more than three lines and should provide a concise picture of your code’s goal and scope. If your coworker takes a look at your file, they should be able to understand what it’s about within 30 seconds.
- Write comments at the top of each class. This comment explains a class’ purpose and scope within a file. For instance, if your class is named “LocationService,” you can add a comment like the following in a Java application:
/* The class below will help to find a location record
with a unique identifier. It returns a location */
public class LocationService {
rest of the code goes here
}
Integrate code quality with Jira and Bitbucket apps
If your team uses Jira to manage the development process or Bitbucket to manage code, you can use code-quality apps from the Atlassian Marketplace to maximize its efficiency. Here are a few helpful apps you can find in the marketplace:
- Awesome Graphs for Bitbucket – Get in-depth charts and graphs that show pull data from your Git repositories to show contribution statistics. This way, you can assess your team’s performance, identify your team’s most productive hours, and recognize team members for their productivity.
- Yet Another Commit Checker – Set different code quality checks, which can be enabled globally or used for defined repositories and projects.
- Sonar for Bitbucket – Integrate Bitbucket with SonarQube – a tool that helps with continuous inspection of code quality – to find coding issues in your app. It provides merge checks to enforce the configured quality standards so that you don’t release anything subpar.
Want more? Explore the Atlassian Marketplace to find more code-quality apps and code review apps.