Какой небольшой проект с открытым исходным кодом с отличным дизайном?
Я ищу небольшие проекты (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
Я не уверен, насколько велик он в терминах строк кода, но загрузка довольно маленькая.
Ответ 5
Магазин Suteki?
http://code.google.com/p/sutekishop/