Предложения отличных примеров реального кода 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?

Ответ 11

Вам определенно нужно выбирать между C или С++. Очевидный пример: хорошие методы управления ошибками сильно различаются.