¿Cuál es el mejor código de código abierto que hayas visto? [cerrado]

19

Parte del valor de Open Source es proporcionar un excelente código de ejemplo para las personas que comienzan con una nueva plataforma o lenguaje.

¿Cuál es el mejor código de código abierto que has encontrado y por qué te gusta tu elección? Cualquier lenguaje servirá, pero estoy particularmente interesado en los mejores ejemplos de Objective-C que pueda señalar.

Obviamente esta es una pregunta abierta, así que dejaré la pregunta abierta por un tiempo y veré qué tipo de respuestas obtenemos.

¡Gracias!

EDITAR: para "lo mejor", estaba pensando en un código que siga las expresiones idiomáticas en el lenguaje o plataforma dados, así como también incluye las partes que hacen que el código sea "profesional": buena documentación, un conjunto de pruebas, etc. Código conciso, pero no es demasiado inteligente se prefiere el código muy breve o hablador.

Andrew Theken
fuente
44
¿Alguna definición particular de "mejor" en mente?
Tu pregunta es un poco amplia. Quizás pueda editarlo para que sea más específico y definir qué significa "mejor" para usted. ¿La mejor interfaz de usuario, la mejor aplicación de escritorio / web / teléfono, la mejor precisión, el mejor código visualmente atractivo?
Walter
+1 para una buena pregunta. Le sugiero que lo pode a un lenguaje / tecnología específica. Comparar C para Linux versus Java para el controlador de base de datos es, francamente, una idea inconsistente.
Fanatic23
Sería de gran ayuda para otros que lean la pregunta si editas esa aclaración en ella. :)
Michael K

Respuestas:

14

Tengo que decir que después de haber examinado fragmentos de código fuente abierto a lo largo de los años, me ha decepcionado enormemente casi todo.

La principal irritación para mí es que generalmente hay muy pocos comentarios, con frecuencia los únicos comentarios son un aviso de copyright largo y legal.

El kernel de Linux es un ejemplo en el que los archivos con frecuencia ni siquiera tienen un comentario que indique qué propósito tienen (por ejemplo, el controlador para XYZ al menos me dice que estoy aproximadamente en el lugar correcto).

Vengo de la programación comercial y de defensa, donde los estándares de codificación requieren comentarios sensibles e inteligibles, no solo para decir lo que hace una unidad de código, sino que a lo largo del código debe haber bloques de comentarios que describan algoritmos, métodos, peculiaridades, hacks / cosas inteligentes , todo para que quienquiera que venga pueda mirar y descubrir RÁPIDAMENTE lo que se está haciendo en lugar de leer el código real minuciosamente.

Quizás la moraleja es: dime qué estás haciendo, no me hagas resolverlo.

No he encontrado NINGÚN código fuente abierto que haga esto bien. En cuanto a buscar el código abierto como un medio para aprender buenas prácticas de codificación, mi consejo es: no lo hagas.

rápidamente_ahora
fuente
Estoy de acuerdo en que los proyectos de código abierto a menudo están poco comentados y mal documentados. Pero todos son voluntarios. Es difícil motivar a los voluntarios para que hagan cosas desagradables, generalmente sin la recompensa que buscan (estatus, social, lograr grandes cosas o hacer lo que aman).
@ pierre303 - Fundé y mantengo NoRMproject.org, una de las principales cosas que hago es escribir comentarios cuando escribo el código, y esto ayuda. Creo que los contribuyentes trabajarán en las partes que enfatizan los líderes. En el caso de NoRM, eso fue Pruebas, Comentarios y código Idiomatic (to c #). Creo que tenemos una base de código bastante profesional y fácil de mantener.
Andrew Theken
Estoy de acuerdo en que los comentarios deben escribirse mientras se escribe el código. (También hago esto en todo mi propio código, principalmente porque soy egoísta y me ayuda a escribir una narración antes del bloque de código; aclara en mi propia mente lo que necesito hacer antes de hacerlo)
now_now
Me recuerda esta cita divertida con la que me topé una vez: "Si me costó escribirlo, a ellos les costará mucho leerlo".
Denis de Bernardy
+1, @quickly_now: ¡cree que el código debe estar bien planeado, probado y ahora bien comentado! ¿En qué tipo de planeta loco estás viviendo?
5

He escuchado cosas muy buenas sobre la base de código Sqlite .

Por lo poco que lo había mirado, se ve muy limpio.

Oded
fuente
55
También tiene un amplio conjunto de pruebas , lo que lo convierte en un modelo de estudio para pruebas de software.
Robert Harvey
Solo desearía que tuviera una interfaz C ++: /
Matthieu M.
5

Donald Knuth escribió dos programas para ayudarlo a componer sus fórmulas matemáticas en sus libros mejor que su editor.

Estos dos programas (en su versión final) se escribieron usando la programación Literate que permitió crear una versión impresa y tipográfica del código fuente, y se publicaron como libros. ¡Estos son simplemente los mejores programas documentados que he leído!

  • "Computadoras y composición tipográfica, Volumen B: TeX: El programa"
  • "Computadoras y composición tipográfica, Volumen D: Metafont: El programa"

No están disponibles para lectura en línea, pero Amazon también le permite "mirar dentro" del libro Metafont en http://www.amazon.com/Computers-Typesetting-D-Metafont-Program/dp/0201134381/

Advertencia: es algo pesado, por eso cada libro tiene 600 páginas.


fuente
1
Nota: es la versión tipográfica que no está disponible en línea. La fuente está totalmente disponible y puede, con un pequeño esfuerzo, utilizarse para generar la versión impresa.
4

El libro Beautiful Code intenta responder a esta pregunta con varias muestras de lo que los colaboradores piensan que son ejemplos de código hermoso de proyectos de código abierto.
texto alternativo

Tangurena
fuente
44
¿Vale la pena echarle un vistazo al libro?
Oliver Weiler el
Sin embargo, esto no es código de código abierto del "mundo real" en ningún sentido. Esta respuesta es hacer trampa! : P
Noldorin
1
Lo tengo, no me impresionó. La mayoría de los capítulos son aburridos, pero hay algunos aspectos destacados: map / reduce se explica si recuerdo correctamente.
Martin Wickman el
4

CodeIgniter

Algunos de los códigos fuente más limpios y mejor documentados que he visto de un proyecto de sistema operativo.

Josh K
fuente
1
PHP y más limpio?
Kugel
1
@ Kugel: Sí a ambos.
Josh K el
Acabo de echar un vistazo a la fuente de CodeIgniter, y de hecho parece muy bien estructurado y limpio. Creo que tan hermoso como puedes entrar en PHP. :) Y siempre me gustó el humor en el código fuente: "// ¿No se especificó DB todavía? Derrótalos sin sentido ... if (! Isset ($ params ['dbdriver']) ..."
Bjarke Freund-Hansen
2
Eché un vistazo al código fuente y debo admitir que estaba bien documentado y era fácil de seguir, y no lo esperaba de un sistema operativo PHP.
Onésimo
2
Otro gran sistema operativo PHP para sistemas operativos es fuelphp ( fuelphp.com ), que también está documentado, presentado de manera limpia y utiliza convenciones de nomenclatura que no te hacen arrancarte el pelo. Eso solo prueba que no es culpa de PHP el código de espagueti, generalmente son las personas que escriben el código.
Michael JV
3

He visto 2 proyectos que están muy bien estructurados:

  1. Django
  2. Proyecto de cromo

Especialmente, el segundo es muy interesante basado en algunas cosas:

  • Cómo usa los procesos para muchas cosas (pestañas, complementos) y cómo encaja
  • multiplataforma con GUI nativa para cada Windows, Mac, Linux
  • integración de kit web

También escuché que Postgre está escrito limpiamente (a diferencia de MySql), pero no lo he leído yo mismo.

Kugel
fuente
1
+1 para el código PostgreSQL. Es extremadamente limpio y legible.
Denis de Bernardy
2

Algunos dicen que el código C para el kernel de Linux es bastante bueno.

(¡No es que entienda la cosa! Es posiblemente el mejor proyecto C de código abierto escrito).

Noldorin
fuente
1
Para un código optimizado es genial. Por legibilidad no tan buena, en mi experiencia. Por supuesto, no he escrito ninguno, solo léelo ...
Michael K
1
Si cierto. Lamentablemente, la pregunta realmente no definía "mejor", así que estoy tomando mi propia definición. :)
Noldorin
2

He encontrado que el código fuente de LLVM es muy legible. Estoy bastante seguro de que es el C ++ más limpio que he visto. Si no está familiarizado con él, es básicamente un kit de herramientas de construcción de compiladores.

  • Cuenta con un extenso conjunto de pruebas. Bueno, en realidad, tiene al menos dos: un conjunto para probar características y otro para probar el rendimiento (del propio LLVM y de los programas compilados que genera).
  • El código está bien comentado.
  • El código altamente repetitivo (como la coincidencia de instrucciones en los diversos backends) se genera automáticamente a partir de una descripción DSL de nivel superior (llamada TableGen).
    • Esto también permite generar múltiples piezas de código disjuntas a partir de la misma descripción. Por ejemplo, la especificación del backend se usa como parte de un backend del compilador, pero también para ensambladores y desensambladores.
  • Tiene bastante buena documentación.

Sin embargo, es un proyecto bastante grande, así que no esperes ser capaz de comprender rápidamente exactamente cómo funciona todo. Pero debería ser bastante fácil obtener una visión general de alto nivel.

Fritas
fuente
1

No es un gran proyecto, pero SubSonic ORM fue extremadamente fácil de piratear para mí. Fue el primer proyecto real de código abierto que pude modificar exactamente como lo necesitaba. La mayoría de los demás terminé mirando la fuente y golpeándome la cabeza contra la pared. Lo hice parcialmente compatible con PostgreSQL (basándolo en el proveedor de SQL Server) en unas pocas horas. Es el proyecto mejor organizado que he visto hasta ahora ... aunque no quiere decir que haya examinado muchos proyectos de código abierto.

Earlz
fuente
0

Primero un ejemplo simple: El código para el sistema de manejo de eventos zope.event. Había usado otros sistemas de eventos, que distribuían eventos a diferentes oyentes de eventos. Cuando vi el código zope.event era tiempo de facepalm, cuando me di cuenta de lo simple que podían ser algunas cosas.

Está escrito en Python, y aquí está el código en su totalidad:

subscribers = []

def notify(event):
    """ Notify all subscribers of ``event``.
    """
    for subscriber in subscribers:
        subscriber(event)

Para agregar un suscriptor, haga esto:

from zope.event import subscribers
subscribers.add(MySubscriber())

El mejor ejemplo de KISS que he visto.

Luego, un ejemplo más complejo: la base de código marciano es muy agradable y fácil de leer, a pesar de que está utilizando algunos trucos inteligentes de Python. Lo mismo ocurre con la mayoría del código de Grok, que está construido con Martian.

Lennart Regebro
fuente
3
No entiendo lo que es genial con este código. No conozco Python, pero solo puedo ver un uso simple del patrón de observación aquí, y nada más.
barjak
¿Lo has comparado con otros sistemas de eventos? Para simplificar, tome otro ejemplo de Python: pypi.python.org/pypi/pyjon.events/1.1.1
Lennart Regebro
1
Hermoso: en realidad escribí algo muy similar en JavaScript. ¿Supongo que soy inteligente? ;)
Michael K
El hecho de que haya sistemas de eventos que son mucho peores, no significa que este sea un gran código. Vi exactamente este código en toneladas de idiomas. Y lo más importante, vi implementaciones de tipo seguro.
back2dos
@ back2dos: Esto es de tipo seguro.
Lennart Regebro
0

Considere leer este libro La arquitectura de las aplicaciones de código abierto . Debería darle una crítica de por qué y cómo se tomaron las decisiones de diseño en los proyectos que se discuten en el libro.

En lugar de buscar lo mejor, que puede eludirlo por mucho tiempo, intente apreciar el diseño de algunos proyectos, tal vez más allá del alcance del libro. Eso podría ayudarlo a construir sobre los éxitos de estos proyectos en lugar de repetir sus errores (o, como se llama popularmente, reinventar la rueda).

vpit3833
fuente