2010-11-04 14 views
14

Je suis à la recherche de petits projets (5 000 à 25 000 lignes) dans des langages tels que Java, C#, C++, Ruby ou Python. Ces projets doivent présenter d'excellents principes d'architecture et de conception. Le but de ceci est de trouver de bons modèles à étudier, plutôt que de se faire renverser la tête pendant les 10 prochaines années jusqu'à ce que j'apprenne ces leçons.Qu'est-ce qu'un petit projet open source avec un excellent design?

Modifier: Merci pour toutes les réponses. Je vais essayer de tous les parcourir et de voir lequel est le plus compréhensible. Ça va me prendre un moment. Ne vous inquiétez pas, cependant. J'accepte un.

Répondre

4

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

De Dirk Riehle: « JUnit 3.8 Conception Documentation mer, 05/14/2008 - 06:24 - driehle

JUnit est de plus en plus utilisé dans les études de cas scientifiques est. parce qu'il est relativement petit, bien connu et autonome.Pour quiconque s'intéresse à une documentation de conception détaillée de la façon dont fonctionne JUnit 3.8, j'ai documenté sa conception.J'ai choisi JUnit 3.8 parce que le passage aux annotations dans 4.0 peut avoir rendu JUnit plus pratique à utiliser, mais le design moins clair (en termes orientés objet) JUnit n'est pas le seul cas commun s tudy, JHotDraw est un autre. Si vous avez des études de cas avec des dessins bien documentés, je serais ravi d'entendre parler «

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

» Résumé: Cet article décrit la conception du cadre des tests unitaires JUnit v3.8 . La technique de documentation utilisée est une version améliorée de la conception basée sur la collaboration, également appelée modélisation de rôle. Dans la conception basée sur la collaboration, les objets sont considérés comme jouant plusieurs rôles dans différents contextes, et différents contextes sont considérés comme des collaborations spécifiques à une tâche. La documentation rend compte de chaque méthode dans le framework JUnit 3.8 en l'assignant à un rôle. Il étudie ainsi si les rôles et les collaborations peuvent servir d'unités de base de fonctionnalité fournies par un design comme un cadre. Une telle mesure de fonctionnalité peut servir à plusieurs fins, par exemple estimer les efforts de mise en œuvre ou mesurer la complexité. "

+0

Après JUnit pour les deux dernières années, je préfère répugnent il. Mon animal de compagnie à ce sujet est son choix de conception pour instancier chaque test dans une instance distincte, et forçant ainsi vos variables "pré-fixture" à être statique. – ripper234

+0

Merci! Je vous remercie!! Je vous remercie!! Qu'on le veuille ou non, j'aimerais passer en revue les notes de conception. Ils sont beaucoup plus rares. – pyfunc

1

C4F Developer Kit

Les caractéristiques kit comprennent glisser-déposer des contrôles et des composants, SmartTags, le code visuel source Basic et Visual C# pour tous les outils et échantillons ainsi que QuickStart et la documentation des API.

0

Je ne peux pas vous donner de détails mais la meilleure source (jeu de mots) est ce que vous utilisez réellement. Si vous avez accès à la source des bibliothèques standard de votre plate-forme, vérifiez-les, si vous utilisez des applications open source, consultez le code de ces dernières. Ils dépasseront probablement de loin votre limite de ligne, mais si vous interagissez réellement avec le code en tant qu'utilisateur et en tant que programmeur, vous apprécierez davantage les décisions de conception.

Faites également attention à la documentation. Les programmes qui ont une bonne documentation sont beaucoup plus susceptibles d'avoir un code vraiment bien pensé.

0

Eh bien, il y a un framework d'application Web/CMS Open Source ASP.NET que j'ai mis en place ces dernières années.J'ai vraiment essayé d'adhérer à de bons principes et modèles de conception - mais ce n'est pas comme si je l'avais "validé" par n'importe qui donc vous avez seulement mon opinion (je ne l'espère pas trop auto-gonflé). J'ai eu plus de 700 téléchargements et pas de mauvais commentaires - donc je ne peux que deviner que je ne fais rien que mal.

Modèles et principes délibérément suivi/mise en œuvre incluent:

  • d'inversion de dépendance (comme discussed here)
  • Load Lazy
  • Responsabilité seul principe
  • dépendances stables Principe
  • Stable Abstractions Principe
  • Ségrégation d'interface (jusqu'à un point ! St)

Ma solution est appelée Morphfolia, et est disponible sur CodePlex: http://morphfolia.codeplex.com

Je ne sais pas comment elle est grande en termes de lignes de code, mais le téléchargement est assez petit.