Предложения отличных примеров реального кода C/С++
Я бы хотел изучить хороший код C/С++. Код должен:
- быть хорошим в стиле и структуре, представляя лучшие практики.
- быть реальной программой (не примером или игрушкой)
- не слишком большой, поэтому для его анализа не требуется возраста.
- Windows и/или Unix
Я знаю, что есть 1000 проектов с открытым исходным кодом. Но я хотел бы услышать ваши предложения.
Я программист на Java, и мне любопытно, как структурирован (файлы) проект в c/С++, гранулярность классов/функций/файлов, документация/комментарии, инструменты сборки и т.д.
Несколько предложений приветствуются, например. это хороший пример Windows, который является хорошим чистым C и т.д.
Ответы
Ответ 1
Я бы специально упомянул memcached. Это отличный пример довольно короткого, читаемого кода с четкой целью.
Во-вторых, я бы рекомендовал веб-сервер Apache. Это фантастически хорошо открытый проект с открытым исходным кодом, о котором вы узнаете много, как о языке, так и об общих методах проектирования, а также о сети/потоке.
Ответ 2
Я проголосовал за nginx: http://sysoev.ru/en/ как пример очень хорошего стиля программирования C
Ответ 3
Samba: большой, кросс-платформенный (POSIX-основанный), чистый C, очень популярный сетевой сервер.
Samba имеет хорошую документацию разработчика, а сама база кода очень хорошо организована; У меня не было проблем с погружением в любое место в коде, чтобы ответить на вопрос, который у меня был о его внутренней работе, или найти ошибку.
Ответ 4
Я считаю, что реализация Lua - довольно хороший источник C. Но языки немного странны, как пример проекта.
Ответ 5
У Диомидиса Спинеллиса есть некоторые предложения в его книге "Чтение кода: перспектива с открытым исходным кодом", Эддисон Уэсли, 2003. ISBN 0-201-79940-5.
Возможно, книга может быть вам полезна.
URL http://www.spinellis.gr/codereading/
Ответ 6
Google Chromium довольно большой, но вам не нужно анализировать все это, чтобы оценить его чистую, рецензируемую структуру.
Кроме того, это хороший пример хорошо выполненного развертывания среды разработки.
Ответ 7
Здесь основной файл для relayd, который является демоном, который обрабатывает балансировку нагрузки и отказоустойчивость. Это красиво написанный, полный признак, чистый C-код. Он достаточно велик, чтобы вы почувствовали "реальный мир", но не настолько велики, что вы не можете обойти его с некоторой работой. Отлично подходит для безопасного, хорошо написанного сетевого кода, демонов и т.д.
Скромность в стороне, там также немного менеджер окон для разбиения на страницы для X, с которым я помог. Это довольно мало, но это настоящий wm, а другие кодеки на нем имеют высокие стандарты (и держите меня за них!)... Приятно познакомиться с базовыми материалами X.
Ответ 8
K & R содержит много хороших примеров реальных программ. Например, на странице 115 второго издания есть две простые реализации команды echo
. Оттуда было бы интересно посмотреть, как команда была реализована с течением времени. Например, есть версия в источнике GNU coreutils. Версия, полученная из BSD, находится в BusyBox источник.
Возможно, было бы интересно посмотреть, как более новые версии сравниваются с примерами учебников. Почему программы, которые используются в реальной жизни дольше? Сколько кода связано с новыми функциями и сколько связано с обработкой крайних случаев? Как бы вы написали один и тот же код в Java?
Ответ 9
Что касается С++, я бы рекомендовал вам источники библиотеки Qt и Исходный код KDE и его программы.
Это красиво написанный код и способ программирования на С++.
Ответ 10
Дополнительные предложения на С++ в: Примеры "современного С++" в действии?
Ответ 11
Вам определенно нужно выбирать между C или С++. Очевидный пример: хорошие методы управления ошибками сильно различаются.