My FeedDiscussionsHeadless CMS
New
Sign in
Log inSign up
Learn more about Hashnode Headless CMSHashnode Headless CMS
Collaborate seamlessly with Hashnode Headless CMS for Enterprise.
Upgrade ✨Learn more
10 Most Common Programming and Coding Mistakes

10 Most Common Programming and Coding Mistakes

Vinay Singh's photo
Vinay Singh
·Apr 6, 2020

Programming is an art, a very delicate form of craftsmanship that finds use in a variety of tasks ranging from making a website to launching rockets into space. While learning to code isn’t that difficult, mastering the same requires patience, persistence, and perseverance.

Failure is your much-appreciated companion when learning to program. However, a good programmer is one that learns from mistakes and errors and avoids the same in the future.

While some programming mistakes are specific to some languages, others are universal and therefore can be found in a range of programming languages.

Common Coding Mistakes

In this article, we’ll be going to discuss 10 of the most common programming and coding mistakes that you must avoid to better your proficiency in programming :

Allocating Resources Without Limits

Programming languages like C and C++ demand for manual memory management and hence memory allocation is common in them. Allocating memory without properly validating the size of the entity being allocated results in memory allocation errors.

When the result of such an abnormal allocation is used directly, it yields unpredictable program execution and output generation. Also, such a problem can also arise if resources like connection handles or file handles are created without proper checking.

Languages such as Java, JavaScript, and Python have automatic memory management. However, memory allocation errors can exist in them too while allocating arrays. The only solution to the problem is to keep these errors in mind while programming.

Not using a Debugger

It’s important to write code that demands less debugging. Also, it isn’t possible to write complex programs without the need for debugging. However, debugging isn’t meant only for a program that isn’t working but also for those that are working just fine.

This is because a powerful debugger allows a programmer to slowly go through the entire code and develop a crisp understanding of what is happening. It also helps the programmer to read between the lines. So, using a good debugger while programming is essential.

Not only the process of debugging help in ensuring that the program produces the desired result but also that it does so in the way it is meant to be. A debugger is a reliable tool of the programming arsenal, especially when a thorough understanding of the program execution is desired.

Improper Validation of an Array Index

When an array is tried to be accessed using an index that lies outside the bounds of the array, we get the Improper Validation of an Array Index error. Trying to access a location outside the valid data boundaries of a program yields the issue of segment fault.

If the array memory location that is to be accessed lies within the data bounds of the program but outside the array, then writing to such locations results in memory corruption.

Although the aforementioned errors are common in C and C++, they can spring up even in programming languages with automatic memory management, including Java, JS, and Python. The only way of dealing with such errors is to pay attention to the same while programming.

Missing Initialization

Variables that are declared within a function or a block and don't end at the conclusion of the same are called local variables. When local variables are first declared, they are allocated on the stack and have random garbage.

Hence, it becomes essential for a programmer to assign some suitable value to these local variables as soon as possible after the declaration. Not doing this yields the missing initialization error that can crash the program or have dire consequences in the form of paving way for security exploits.

No Regular Backups

Programming mishaps can happen all the time. The disk on which you were storing your currently working programming project might crash or the present form of your program might turn out to be a disaster and you need to roll back to a previous reliable state.

The possibilities of failing in programming are endless. So, what should be done to minimize the impact of such failures? Make regular backups.

Thankfully, there are so many options for backing up your programming data in the present times, ranging from automatic entire disk backup processes to selective manual online backups.

Creating multiple backups takes the cautious process a step further. Not only making backups of your programming chores and projects is important but also to maintain and organize them too.

Not Following a Coding Style

Following a coding style is very important for programmers. It enables the programmer to effectively deal with humongous programming projects that require several runs and reruns, and also make the same much easier to comprehend and modifiable by other programmers.

No matter what programming language you’re working on, C++ or Python, a quality code must have:

  • Consistent indentation
  • Good usage of comments
  • Obvious naming convention i.e. giving meaningful names to different programming entities

Adopting a specific programming style allows the programmer to focus more on the solution rather than spending time in comprehending the code written by herself and making it understandable to fellow programmers.

Not Maintaining a Program Log

In case there isn’t much information available about an error, the program log helps the programmer to sort out the mess. Production systems maintain a regular record of what has been done and who asked for it.

A programmer can go back into logs and find some request using the person ID and the approximate time of the occurrence of the request. Also, the log will also tell the programmer whether the request was successfully executed or not.

Hence, it is important to maintain a log at all times when writing code.

Not Validating or Adequately Validating User Input

SQL Injection is a way of injecting SQL commands in the user input so that the database directly executes such commands. Poor provision for user input can pave way for an attacker to delete tables, drop databases, steal data, and more using SQL Injection.

An important cause backing the success of SQL Injection attacks is the fact that application software responsible for processing user input performs inadequate checks and validation on the user input before finally passing it to the database for execution.

In order to allow an application to use some command available on the OS without wasting time, OS Command Injection is used. In such a case, the user-specified input is directly passed to the OS for quick execution.

Like SQL Injection, the OS Command Injection can be a potential security issue in case of a weaker user-input validation and check. If the application passes user input without proper validation, it can allow a trespasser to alter file permissions, delete files, steal data, etc.

Hence, it is important to develop as well as use application software that has a rigorous user input checking and validation scheme. Programmers need to set up a thorough user input validation strategy that reduces the risk of malicious access to the least possible.

A program accepting some external input must:

  • Ensure that the user input doesn’t result in overflowing some internal buffer
  • Ensure that the user input doesn’t leak into the query [In case the program uses input for building queries]

Running into Buffer Overflow and Integer Overflow

Whenever data is tried to be written into a buffer past its end, we get the buffer overflow situation. There can be several things that can lead to the common programming issue. However, the two most important ones resulting in buffer overflow are:

  • Continuously writing into a buffer without checking the length
  • Faulty calculations of the write position

The buffer overflow error has resulted in some of the major exploits in the history of computing. Morris Internet Worm in 1988, W32/Nimda worm in 2001, and Sendmail error in 2003 are some of the most important exploits of buffer overflow.

Another common mistake plaguing programmers is integer overflow. An Integer Overflow error occurs when the programmer tries to store a value into an integral type that is bigger than the maximum limit for the integral type.

The tricky thing in an integer overflow situation is that instead of producing a direct error, the value is truncated and the operation succeeds while storing an unpredictable result.

Such a situation worsens if the stored value is meant to be used somewhere else as it will then lead to the procurement of an undesired result. To avoid an integer overflow situation, pay attention to the value being stored and the integral type’s maximum limit while coding.

Writing Bloated Functions

Functions are the core of programming. They are responsible for carrying out specific tasks. As such, there is a wide variety of functions in terms of size and operation. While smaller and quicker tasks require smaller functions, bigger tasks need big functions.

However, having too much of a function can often lead to confusion and chaos rather than getting a better way to solve a particular problem or sub-problem. Typically, a programming function is considered to be much too big if it is:

  • Having more than 8:
    • If statements
    • Switch statements
    • Looping constructs
  • More than 50 lines of code
  • Unexplainable in a concise manner and using simplistic terms

In addition to becoming extremely hard to debug, bigger functions also become difficult to maintain due to the following reasons:

  • Difficult in understanding the exact operation
  • Too many interactions
  • Too many paths through the code

Instead of writing a function that is able to complete several tasks on its own, it is a much better idea to divide the function into smaller units dedicated to various tasks involved. Smaller functions are easier to understand and much better to maintain.

Conclusion

So now that you know about the 10 most common programming and coding mistakes, you must avoid the undesirable scenarios that yield them. Avoiding these common programming mistakes will tighten up your coding ability and will help you in becoming a better programmer.

What coding mistakes shouldn’t be on the list? What other programming mistakes are important as per your point of view? Let us know via comments!