¿Cómo las compañías como Dropbox y Quora mantienen grandes proyectos de Python? Python es perfecto para scripts rápidos, pero un proyecto más grande es difícil de mantener. ¿Cómo manejan esas compañías las grandes bases de código Python? ¿Qué herramientas o convenciones utilizan?

No puedo responder por Dropbox o Quora, pero después de haber trabajado para dos compañías que tienen bases de código fuente Python muy grandes, me gustaría señalar que mantener una base de código fuente Python grande no es tan fácil como parece. Aquí hay algunos datos aleatorios que esperamos que te ayuden:

  • Casi todos usan 2.7 (si tiene una base de código existente, hay pocos incentivos para migrar a 3.x). No tengo experiencia con 3.x, así que no puedo recomendarlo.
  • Usted querría usar paquetes de python para modularizar su código. Pon tu código en carpetas. Agregue un __init__.py vacío en todos ellos, incluyendo la raíz.
  • Sea consistente al nombrar carpetas, módulos, clases, variables. Si no tienes una pista, elige PEP-8.
  • Sea consistente al importar: Python (al menos 2.x) no es muy consistente y es muy fácil mezclar las importaciones de módulos, paquetes y funciones. Elija un sistema y manténgalo (preferiblemente uno que no esté en conflicto con los esquemas de nombres estándar (mi favorito personal es la ruta completa “import util.file.crc”).
  • Documente el sistema y asegúrese de que todos lo sigan (las revisiones de código y las burlas del enfriador de agua son dos sistemas que podría usar).
  • Ponga en su lugar scripts o convenciones para iniciar programas y pruebas unitarias. Vale la pena invertir tiempo en esto.
  • Recomendaría un sistema de compilación automática, pero esto es algo que necesita más tiempo que el elemento anterior.
  • Recomiendo encarecidamente elegir un método de instalación temprano y seguirlo. Mi preferencia personal es pip. Pero este script es muy útil para que las personas no se estén golpeando la cabeza contra los problemas porque están usando una versión diferente de una biblioteca.
  • Los sistemas de control de fuente son obligatorios, para todos los trabajos de codificación.
  • Elija un editor con resaltado de sintaxis y una buena búsqueda de texto completo: tiende a usar mucho eso. Mi favorito personal es PyCharm.

En realidad, Python es más fácil de mantener que otros lenguajes (Perl, Java, etc.), ya que la sintaxis de Python se diseñó para facilitar la lectura y la comprensión instantánea. Además, el lenguaje es muy simple, directo y está bien documentado. Nuevos desarrolladores mucho más pequeños que proyectos que involucran otros lenguajes.

La versión de código en Python es muy sencilla, especialmente con Git y SVN. Además, cuando tienes desarrolladores de Python dentro de tu equipo, las herramientas tienden a ser impresionantes y todo, desde el desarrollo hasta la implementación, se automatiza fácilmente (scripts fáciles).

Los frameworks web de Python están mucho más organizados y menos saturados que Java o .Net. Además, la infraestructura tiende a ser mucho más estable, consume menos recursos y, en general, es mucho más flexible (y barata).

Hay muchos marcos web de Python que pueden ayudarlo a completar una aplicación web en 1/4 del tiempo que consumiría con otros idiomas (eche un vistazo a Django, CherryPy, Pylons, TurboGears, Tornado, etc.) y finalice con código que generalmente es más estable debido a la simplicidad de las cosas e independiente de entornos complejos y máquinas virtuales.

También otro gran proyecto de Python a considerar es YouTube.

Con múltiples desarrolladores y grandes bases de código, el juego de la culpa puede volverse improductivo, y mucho menos tratar de entender qué rompió qué. Por lo tanto, use un sistema de integración continua como Jenkins, algunos enlaces útiles sobre esto:

devdocs
Cómo usar Jenkins para el desarrollo de python
La API de Python Jenkins

No creo que haya nada que esté puramente relacionado con Python. Puede dividir el código base, crear módulos, usar estándares de codificación, usar un VCS, etc. como con cualquier otro lenguaje de programación.

Tampoco entiendo por qué sería más difícil de mantener que los proyectos realizados con otros lenguajes de programación.

Python es uno de esos lenguajes, que es fácil de mantener debido a su sintaxis e ideología. Y, como dijo Marko, todos los estándares de codificación son adecuados para este idioma.

Supongo que no hay tantas limitaciones en cuanto al lenguaje, si no estás trabajando en un servicio con altas tareas matemáticas … Existen limitaciones de la tecnología.

PD Disculpe mi inglés, puede corregir mis errores para mejorar mi habilidad lingüística.