Sadly there is a ton of badly written code out in the wild. Hardware related code, seem to suffer more in this regards. I imagine, many developer in this segment are unwillingly to invest time in quality or are just inexperienced.
Even if you are dedicated in reliable and high quality code, you will probably run into the situation, where you have to use a library with really low standards.
There are a number of strategies to deal with this code:
- Rewrite the library.
- Refactor the code.
- Wrap the library.
- Wrap the interface.
Rewrite the Library
This is actually the best you can do and it is also the most time-consuming approach. Yet, write the code from scratch will give you several benefits:
- You will perfectly understand how the original library and the accessed hardware works. Actually you have to understand it, otherwise you are unable to rewrite the code.
- The new code will be modern, fast, reliable and in your coding style.
- If you open source the new code, you will give people an alternative and a better example how to implement something the right way.
- You can also selectively remove unwanted/bloated parts from the original code, which can reduce the overall binary size of the final project.
- It will also give you the option to implement a proper error handling in the new code.
If you have the time and motivation to rewrite the code, do it!
Refactor the Code
Changing the code, without changing the functionality is called code refactoring. This is a good strategy, a compromise, between rewriting and wrapping. Usually you will just go, line by line, through the original code, modernise it and cleaning it up.