Isolating Dependencies in C++ Code

When working in C++, one of the main problems is the complexity of interfaces. The constant use of header files in the language make it difficult to avoid the inflation of translation unit sizes – a single file can include dozens of headers, which can do the same recursively. As a result, even small source files can take a long time to compile.

The issue becomes even more pronounced when you consider templates. The fact that they need to be textually included when invoked in a source file has consequences for the size of the translation units. In the end they just add even more to the amount of work the compiler needs to complete for each translation unit.

There are some techniques, however, that can be valuable in overcoming these issues. One particular technique that I use frequently is avoiding direct dependencies on external libraries in my source files. This technique may be hard to use in some situations, but for smaller libraries it works really well.

Minimizing Dependencies

The idea is that you don’t need to include directly the header file of a third-party library in you code. Instead, you can create a single source file that includes the library’s header file – and then create you own classes or functions that export the functionality to the rest of the application.

For example, when using a compression library, instead of adding the header file from the third party vendor, I just create a new pair of source file and a header file:

  • compress.cpp and
  • compress.h

The first file includes the external header. The last one provides a simple interface that I will use in the rest of the source code. This has a number of advantages:

  • The dependency is centralized. If, in the future I need to use another library, I will just need o change one source file. Everything else will compile correctly because I control the code.
  • The interface is easy to use. Since I am the creator of the simple interface in the header file,  I will add only the functionality that matters, and nothing else.
  • The interface is small. As you are including the external header file only once, this will reduce your total compilation time. Your local interface will have only the small number of elements that you really need.

Creating simple interfaces can make your life much easier, and reduce maintenance risks. It is a win-win scenario for developers, since this can reduce compilation times, and minimize future integration costs.

Similar Posts:

Similar Posts

68 Comments

  1. You can certainly see your skills in the work you write. The sector hopes for even more passionate writers such as you who
    aren’t afraid to say how they believe. All the time
    follow your heart.

  2. I’d like to thank you for the efforts you’ve put in penning this blog.
    I really hope to view the same high-grade content by
    you later on as well. In truth, your creative writing abilities has
    motivated me to get my own blog now ;)

  3. Hi! Quick question that’s totally off topic.
    Do you know how to make your site mobile friendly?
    My weblog looks weird when browsing from my apple iphone.

    I’m trying to find a template or plugin that might be able to correct this issue.

    If you have any suggestions, please share. Appreciate it!

  4. Simply desire to say your article is as astounding.
    The clarity to your publish is simply great and that i could think you are
    a professional in this subject. Fine together with your permission let me to
    grasp your RSS feed to keep up to date with approaching post.

    Thanks a million and please continue the rewarding work.

  5. With havin so much content do you ever run into any problems of plagorism or copyright infringement?

    My blog has a lot of completely unique content I’ve either written myself or
    outsourced but it appears a lot of it is popping it up all over the web without my authorization. Do you know any
    solutions to help prevent content from being stolen? I’d really appreciate
    it.

  6. Good way of describing, and pleasant piece of writing to obtain facts
    about my presentation subject, which i am going to deliver in institution of
    higher education.

  7. That is very interesting, You’re a very professional blogger.
    I’ve joined your rss feed and sit up for searching for extra of
    your excellent post. Also, I have shared your web site in my social networks

  8. I’ll immediately take hold of your rss as I can not to find your e-mail subscription link or
    newsletter service. Do you have any? Kindly allow me realize so that I may just subscribe.
    Thanks.

  9. Hey there! Someone in my Myspace group shared this website with us
    so I came to check it out. I’m definitely enjoying the information. I’m
    book-marking and will be tweeting this to my followers!

    Wonderful blog and outstanding style and design.

  10. Hello There. I found your blog using msn. This is an extremely well written article.

    I’ll make sure to bookmark it and return to read more of your useful info.
    Thanks for the post. I’ll definitely comeback.

  11. you are really a good webmaster. The website loading speed is amazing.
    It sort of feels that you’re doing any unique trick.
    Also, The contents are masterpiece. you’ve performed a great job in this subject!

  12. Instant access to millions of digital products you can brand and sell as your own ? ! ? Expansive kids’ product collection ! ? Hundreds of thousands of professionally written eBooks ! ? Fully customizable guides and workbooks ! ? PowerPoint and presentation templates ! ? Infographics and visual templates ! ? High-definition logo templates ! ? Print-on-demand T-shirt designs ! ? Video editing assets and motion graphic ! ? Graphic design resources ! ? Social media content packs ! ? Trending digital products across multiple niches ! ? Business and productivity templates ! ? Digital art collections ! ? Music producer assets ! ? Cyberpunk-themed collections ! ? Advanced 3D printing files ! ? Planner & journal creator ! ? ChatGPT prompt collection ! ? Fitness and wellness mega bundles ! And much more to explore here : http://unlimited-ai-tools.advertising4you.co.uk

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.