10 General Tips for Writing Cleaner Code

Guest Blogger

Jonathan Baker

Keeping It Clean

It’s no secret that programming is tough work. It’s hard enough just to learn coding languages and study algorithms, let alone code and creating a complex application that actually functions. In a way, writing clean code is a lot like golfing or playing an instrument- it looks much easier than it actually is. So why bother striving to keep your code clean and concise? Because in the long term, the benefits are absolutely worth it.

Why Bother Keeping Your Code Clean?

There are a number of benefits for writing clean code, with the following among them:

  • Easier troubleshooting. Once you begin focusing on keeping your code clean, problem-solving becomes simplified. Instead of sifting through heaps of code and brute-forcing solutions, your approach to coding and algorithms becomes succinct and intentional. 
  • Less time spent on maintenance. Because clean code is much easier to read and understand, your development team will spend less time trying to figure out what each segment of code actually does, and more time fixing or revising any outdated or poorly written code. 
  • Less confusion and miscommunication. If you are working with a team of other developers, clean code helps to ensure the chance of misunderstandings between developers remains low. Each developer can tell what the goal and intentions were behind each piece of code, drastically speeding up development times and reducing the likelihood of bugs and errors.

And just like that, the user is now logged in to your application without ever having to remember a password. If the magic link is clicked but no user is found, the authentication stalls and no further actions would occur. This approach is pretty straight forward, and with less than 10 steps total odds are high that it is very similar to your workflow for when users forget and must reset their passwords.

Now that you have an idea of why writing clean code is so important, here are 10 general tips for keeping your coding clean.

1. Use Descriptive Names

What are variables, classes, or functions? There are a number of different ways to answer that, but when you boil it down, those tags are nothing more than the interface between the programmer and the underlying logic of the application you are trying to build. 

So, if you end up using unclear names for variables, classes, or functions, all you’re doing is making it significantly harder for any developer (including yourself) who is reading the code to understand the application logic. For example, what does a variable named dxy actually mean? In order to figure it out, a developer would likely have to read an entire segment of code just to get an idea. However, if that variable was instead named distanceBetweenXY, it’s pretty easy to instantly identify its significance at a glance. 

2. Assign Each Class or Function a Single Purpose

If you have ever taken a peek under the hood of a function that was hundreds or thousands of lines of code, then you have some idea of how difficult it can be to read, understand, and make edits. 

Clean code is broken down into bite-sized chunks. Each function should be built to perform only a single task, and each class should only represent a single concept. This is, of course, a simplification. But when in doubt, simpler is almost always cleaner.

3. Delete Any Unnecessary Code

This is a bad habit we see programmers make from time to time. Things typically play out like this: A developer wants to review, fix, or optimize a segment of code. Using comments, they do a rewrite of the code just below it. And even though everything works fine, they keep the old code there just in case. 

Over time, this accumulates huge segments of commented-out code that are both unnecessary and create a lot of clutter within your source files. In most cases, the surrounding code has evolved over time, which means the commented-out code wouldn’t work anymore even if restored. This is why it is so important to use source control tools such as Git or Mercurial.

4. Readability is More Important Than Being Clever

An unfortunate pitfall many programmers fall prey to is the idea that “clever code” and “clean code” are the same thing, as if compacting a dozen lines of code into one is somehow cleaner. Yes, it takes up less space on the screen, but is it actually easier to understand? 

Writing clever code almost feels like solving a puzzle, so it’s easy to see why some programmers repeatedly make this mistake. They found a special and unique solution to the problem which ends up acting as a validation of the programmer’s skills. But when building an app, it’s important to check your ego at the door and always optimize your code for the next person who is going to be reading it.

5. Maintain a Consistent Coding Style

Coding tutorials can be a great place for rookie developers to start building up the skills they need. Unfortunately, one of the downsides of a new programmer learning from tutorials is that they tend to pick up a wide variety of coding habits which can often conflict with one another. 

Lithios isn’t here to tell you that one style is better than another, but we do want to stress the importance of keeping your style consistent across the project. Before you begin, think hard about what you want to do from the outset and then stick to it. If you struggle with this, there are some languages (such as Python and C#) that have language-wide style guides that are worth looking into.

6. Choose an Architecture That Makes Sense for You

There are numerous architectures you could spring for in order to build your next project. Each one is suited to different needs, so take note that this tip is not about selecting the ‘best’ architecture out there, but rather finding the right architecture to suit your needs.

For example, the Model-View-Controller (MVC) pattern is quite popular for developing web applications because it excels at keeping your code organized in a way that helps to minimize the amount of effort spent on maintenance. Likewise, the Entity-Component-System (ECS) is a popular pattern for game development because it helps to break down game data and logic into modules. It reduces maintenance while also producing code that is easy to read. Each pattern does its job well enough, but you likely wouldn’t use an ECS when building a web application, and vice versa.

7. Understand Your Language’s Nuances

When learning a new programming language, one of the most difficult aspects is understanding the nuances that separate it from other languages. Having a solid grasp of these nuances is what can separate bloated, convoluted code from clean, easy-to-maintain code. 

As an example, consider Python, Java, and JavaScript. These languages are so different from each other that it requires a completely different way of thinking depending on which one you choose. While Python leans heavily into compact code and duck typing, Java is more on the side of verbosity and explicitness. Each language has nuances and idioms that encourage a certain style of coding.

8. Learn From Masters

If you are trying to learn how to code cleanly, one of the best things you can do is study code written by industry masters. This will help give you an idea of what clean code looks like, and can give you a better sense of why things are written the way they are. 

While you obviously cannot just walk into Apple’s headquarters and take a peek at the source code of their projects, you could always browse notable open-source projects. A great place to do this is the showcased projects on GitHub. That’s one of the main reasons why open-source projects exist: so others may learn from them.

9. Write Good Comments

Perhaps the oldest tip in the world of programming, “write good comments” is a generic and often overlooked piece of advice. Typically, rookies are encouraged to comment as much as they can. However, it almost feels like things have swung too far in the opposite direction. Rookies tend to comment too much- describing things that don’t need to be described and missing the point of what a “good comment” really is. 

As a general rule of thumb, comments should focus on explaining why a segment of code exists, rather than honing in on what the code does. After all, if the code was written cleanly, its function should be self-explanatory.

10. Refactor Extensively

Refactoring is an extremely important component of the coding process. Put simply, refactoring is a technique for improving the design of existing code without impacting its actual behavior. If you find that your code is tripping you up enough to the point that you are constantly having to comment it out, perhaps you should consider refactoring it instead. 

Moreover, as you edit small bits of code throughout your project, you should always leave the code in a better state than when you found it. In the moment it may be a bit of a nuisance, but it almost always pays off in the long run.

Conclusion

Learning to code is difficult, and keeping your code clean is even more of a challenge. There isn’t some single cure-all or technique you can use that guarantees everything will be written cleanly and correctly. There is no de facto ‘right way’ to write clean code, but there are plenty of wrong ways to do it. It’s a skill that takes years to master, but is always worth it in the end. We hope this guide provides some helpful insight into how to keep your code clean and concise.

Explore More Blogs

Ready to get started with Lithios?

Contact us to see why the brightest companies trust Lithios.

Get in touch

©2023 Lithios LLC. All Rights Reserved