Какие проекты вы просматриваете? Это профессиональные проекты или что-то случайное?
Одна из вещей, которые я заметил, - это то, что многие устаревшие коды типов (я работал над базой кода, предшествовавшей C ++ 98) избегают стандартной библиотеки C ++ из-за проблем производительности в то время Или просто потому, что в то время библиотек не было. Конечно, в некоторых средах (встроенные системы, игры, защита и т. Д.) Могут быть другие требования, которые во многих случаях исключают использование стандартной библиотеки C ++, например, мой коллега работал в обороне и вообще не мог использовать STL. , из-за требований клиента не использовать его.
В общем, если есть выбор - использовать стандартную библиотеку, а не изобретать собственное колесо, или использовать чужую библиотеку, тогда, в общем, я бы сначала выбрал первый вариант. Код проверяется тысячами, сотнями тысяч людей и подвергается большему тестированию и проверке, чем большинство вещей, которые вы реализуете сами.
Сторонняя библиотека (давайте выберем пример типа Boost), если в ней есть то, что вам нужно. Такая библиотека, как Boost, пользуется уважением, имеет репутацию кода исключительного качества и используется / проверяется / поддерживается многими, многими людьми.
Окончательный выбор - изобретение вашего собственного кода, я думаю, это действительно можно разделить на несколько категорий:
- Самообучение - написание кода просто для изучения, но это означает, что вы не ожидаете, что вы отправите его как рабочий код.
- У вас есть особые требования, которые не удовлетворяются чем-либо, что может быть приобретено, или должно быть адаптировано из чего-то другого. Этого много, вам может понадобиться написать свои собственные алгоритмы, специфичные для того, что вы делаете.
Но помните, что если вы реализуете свою собственную, подумайте, есть ли она в стандартной библиотеке, или нет, в противном случае вы можете столкнуться с проблемой обслуживания, если что-то очень укоренилось в вашем коде. Моя последняя компания реализовала свои собственные классы контейнеров, и, конечно, база кода выросла до миллионов строк кода (в тоннах продуктов), и каждый использовал эти классы контейнеров, разработанные внутри компании. Ошибки в этих контейнерах требуют значительных затрат времени и денег на исправление, потому что в классах были только фундаментальные ошибки (связанные списки, векторы, ассоциативные массивы, ничего, чего не обеспечивает стандартный C ++). В то время как новый код использовал стандартную библиотеку, у компании просто не было ресурсов, чтобы начать рефакторинг всего старого кода.
Если вы можете переложить это беспокойство на других разработчиков, имеющих опыт работы с таким кодом, И пройти тестирование тысяч людей? Это большая победа!