Какой небольшой проект с открытым исходным кодом с отличным дизайном?

Я ищу небольшие проекты (5000 - 25 000 строк) на таких языках, как Java, С#, С++, Ruby или Python. Эти проекты должны обладать отличной архитектурой и принципами проектирования. Цель этого состоит в том, чтобы найти хорошие модели для изучения, вместо того, чтобы стучать по голове в течение следующих 10 лет, пока я не изучу эти уроки.

Изменить: Спасибо за все ответы. Я попытаюсь пройти через все их и посмотреть, какая из них наиболее понятна. Это займет у меня время. Не волнуйся. Я соглашусь с ним.

Ответы

Ответ 1

Junit 3.8 http://www.junit.org/node/363

От Дирка Риле: "JUnit 3.8 Проектная документация Ср, 05/14/2008 - 06:24 - driehle

JUnit все чаще используется в научных исследованиях. Это потому, что оно сравнительно мало, хорошо известно и самодостаточно. Для тех, кто заинтересован в подробной проектной документации по работе JUnit 3.8, я задокументировал ее дизайн. Я выбрал JUnit 3.8, потому что переход к аннотации в 4.0 мог сделать JUnit более удобным в использовании, но дизайн менее ясен (в объектно-ориентированных терминах). JUnit - не единственное общее исследование, JHotDraw - другое. Если у вас есть дополнительные примеры с хорошо документированными проектами, я бы с удовольствием об этом узнал! "

и http://dirkriehle.com/2008/04/03/junit-38-documented-using-collaborations/

"Аннотация: В настоящем документе описывается дизайн модульной системы тестирования JUnit v3.8. Используемая методика документирования - это расширенная версия совместной разработки, также известная как ролевое моделирование. В рамках совместной разработки объекты просматриваются как различные роли в разных контекстах, а разные контексты рассматриваются как совместное задание на конкретные задачи. Документация учитывает каждый метод в структуре JUnit 3.8, присваивая ему роль. В этом случае выясняется, могут ли роли и совместное использование служить базовыми единицами функциональности обеспечиваемое конструкцией, такой как структура. Такая мера функциональности может служить нескольким целям, например, оценивать усилия по внедрению или сложность измерения".

Ответ 2

C4F Developer Kit

Функции набора включают элементы управления перетаскиванием и компоненты, SmartTags, Visual Basic и Visual С# для всех инструментов и образцы, а также полную документацию по QuickStarts и API.

Ответ 3

Я не могу дать вам специфику, но лучший источник (каламбур) - это то, что вы на самом деле используете. Если у вас есть доступ к источнику стандартных библиотек вашей платформы, проверьте их, если вы используете приложения с открытым исходным кодом, проверьте код тоже.

Они, скорее всего, значительно превысят лимитный лимит, но если вы действительно взаимодействуете с кодом как пользователем, так и с программистом, вы поймете гораздо более конструктивные решения.

Обратите внимание на документацию. Программы, которые имеют хорошую документацию, гораздо более вероятны в моем опыте, чтобы иметь действительно продуманный код.

Ответ 4

Хорошо, есть Open ASP.NET CMS/Web Application Framework, который я собирал в течение последних нескольких лет.

Я очень старался придерживаться хороших принципов и шаблонов дизайна, но это не так, как будто я его "подтвердил" кем-либо, поэтому у вас есть только мое (надеюсь, не слишком самозанятое) мнение. У меня было более 700 скачиваний и никаких плохих отзывов - так что я могу только догадываться, что я не делаю ничего , что неправильно.

Образцы и принципы, преднамеренно выполняемые/внедренные, включают:

  • Инверсия зависимостей (как обсуждается здесь)
  • Lazy Load
  • Принцип единой ответственности
  • Принцип стабильных зависимостей
  • Стабильный принцип абстракций
  • Разделение интерфейса (по крайней мере до точки!)

Мое решение называется Morphfolia и доступно на CodePlex: http://morphfolia.codeplex.com

Я не уверен, насколько велик он в терминах строк кода, но загрузка довольно маленькая.