Под хорошим дизайном я имею в виду такие вещи, как значимые классы и архитектура, хорошее использование шаблонов проектирования, хорошее использование абстракции, хорошая организация компонентов, высокая согласованность и низкая связь между компонентами.
Во-первых, программное обеспечение, хорошее или плохое, не живет в одиночестве - оно моделирует сценарий реального мира, который люди воспринимают как проблему, и поэтому всегда тесно связан с чем-то, называемым «областью приложения». Поэтому, когда вы говорите о программном обеспечении, сначала узнайте и изучите предметную область - только тогда вы сможете достичь усмотрения добра и зла.
мерзавец - не просто хороший, а удивительный дизайн. По сути, это не контроль версий, а файловая система. Тонкий шпон функциональности в верхней части ядра делает его системой контроля версий. Познакомьтесь с внутренностями git, и ваше чувство дизайна программного обеспечения будет просвещено.
jQuery - не очень хорошо (внутренне) документированная библиотека, но вдохновляющий источник, демонстрирующий, как код JavaScript на стороне клиента может творить чудеса.
NodeJS - если вы хотите создавать серверы, у этого проекта есть новые идеи и шаблоны.
v8 - очень хороший код на C ++, фантастическая библиотека для изучения / изучения реализаций виртуальных машин.
Проекты NoSQL - Couch, Mongo, Redis, Cassandra - эти проекты демонстрируют умные способы решения проблем постоянства. Также они охватывают идею постоянства полиглота.
Boost библиотеки - хорошая доза C ++.
OpenStack - очень хорошие проекты по облачным вычислениям и виртуализации.
Apache Software Foundation - выберите любой из своих проектов и изучите его. Модульная структура HTTPd является отличным источником, если вы хотите увидеть, как компоненты собираются вместе. APR (переносимая среда выполнения Apache) - действительно хорошая библиотека.
mod_wsgi - одна из лучших программ на Си, с которыми я сталкивался.
«хорошее использование шаблонов проектирования» - НЕ важно, чтобы код соответствовал общеизвестному шаблону проектирования, - более важно, чтобы он решал проблему «разумно» - чтобы его можно было обслуживать, использовать повторно и читать. Если код втиснут в определенную «форму» - просто для того, чтобы придерживаться шаблона проектирования - это может быть плохой код.
«не менее 100 000 строк кода» - с тех пор, когда количество строк стало метрикой хорошего качества, - чтобы почувствовать вкус «хорошо разработанного / архитектурного программного обеспечения», оно не должно быть БОЛЬШИМ.
Опять же, не забудьте сначала изучить природу и нюансы проблемной области, а затем углубиться в чтение кода.
ОБНОВЛЕНИЕ: октябрь 2015
InfluxDB - https://influxdb.com/
Этот проект Go находится в стадии активной разработки и по-прежнему НЕ очень сложен. Таким образом, вы можете начать копаться в коде относительно легко, чем что-то вроде OpenStack.