(I defined this program in terms of a C++ program because I faced this thing while coding a C++ program, but the actual question is language-agnostic).
I had to copy chars from one char* buffer to another buffer. So, instead of doing a #include <cstring> for strcpy, I wrote a small snippet of code myself to do the same.
Here are the thoughts that I could think of then:
- Standard library functions are generally the fastest implementations that one can find of a certain code.
- But it would be unwise to include a big header file if you’re going to use only a very minor part of it (that’s what I think happens).
I want to know how right I was in doing so, and what can be defined as a bound of coding own snippets after which one should revert to using headers.
The first rule of thumb is “don’t reinvent the wheel”. And remember that your wheel will probably be worse 🙂 (there are very good programmers that write the wheel provided by your compiler).
But yes, if I had to include the whole
boostlibrary for a single function, I would try to directly copy it from the library 🙂I’ll add that the question is marked as “language-agnostic”, so we can’t simply speak about the difference between C/C++ headers and C/C++ libraries. If we speak of a generic language, the inclusion of an external library COULD have side-effects, even BIG side-effects. For example it could slow down very much the startup of your program even if it isn’t used (because it has static initializers that need to be called at startup, or it references flocks of other dll/dynamic libraries that need to be loaded). And it wouldn’t be the first time there is an error in the startup of a program caused by the static startup of one of its dependancies 🙂
So in the end “it depends”. I would say that if only have to copy up to one file (let’s say 250-500 lines) from a BSD source there isn’t any big problem, for anything bigger linking to the library is probably necessary.