Realmente no escribo proyectos grandes. No mantengo una gran base de datos ni trato con millones de líneas de código.
Mi código es principalmente material de tipo "script" (cosas para probar funciones matemáticas o para simular algo), "programación científica". Los programas más largos en los que he trabajado hasta ahora son un par de cientos de líneas de código, y la mayoría de los programas en los que trabajo son alrededor de 150.
Mi código también es basura. Me di cuenta de esto el otro día cuando estaba tratando de encontrar un archivo que escribí hace un tiempo, pero que probablemente sobrescribí y que no uso el control de versiones, lo que probablemente hace que una gran cantidad de ustedes se encojan de agonía ante mi estupidez.
El estilo de mi código es complicado y está lleno de comentarios obsoletos que indican formas alternativas de hacer algo o con líneas de código copiadas. Si bien los nombres de las variables siempre comienzan muy bien y son descriptivos, a medida que agrego o cambio cosas según, por ejemplo, algo nuevo que alguien quiere probar, el código se superpone en la parte superior y se sobrescribe y porque siento que esto debería probarse rápidamente ahora que tengo un marco de trabajo, empiezo a usar nombres de variables malísimos y el archivo va al bote.
En el proyecto en el que estoy trabajando ahora, estoy en la fase en la que todo esto vuelve para morderme a lo grande. Pero el problema es (aparte de usar el control de versiones y hacer un nuevo archivo para cada nueva iteración y grabarlo todo en un archivo de texto en algún lugar, lo que probablemente ayudará a la situación dramáticamente) Realmente no sé cómo proceder para mejorar Mi estilo de codificación real.
¿Son necesarias las pruebas unitarias para escribir piezas de código más pequeñas? ¿Qué tal OOP? ¿Qué tipo de enfoques son buenos para escribir un código bueno y limpio rápidamente al hacer "programación científica" en lugar de trabajar en proyectos más grandes?
Hago estas preguntas porque a menudo, la programación en sí misma no es súper compleja. Se trata más de matemáticas o ciencias que estoy probando o investigando con la programación. Por ejemplo, ¿es necesaria una clase cuando dos variables y una función probablemente podrían ocuparse de ella? (Tenga en cuenta que, en general, también se trata de situaciones en las que se prefiere que la velocidad del programa sea más rápida: cuando ejecuta más de 25,000,000 pasos de una simulación, quiere que sea así).
Quizás esto es demasiado amplio, y si es así, me disculpo, pero al mirar los libros de programación, a menudo parecen abordarse en proyectos más grandes. Mi código no necesita OOP, y ya es bastante corto, así que no es como "¡oh, pero el archivo se reducirá en mil líneas si lo hacemos!" Quiero saber cómo "comenzar de nuevo" y programar limpiamente en estos proyectos más pequeños y rápidos.
Me complacería proporcionar detalles más específicos, pero cuanto más general sea el consejo, más útil, creo. Estoy programando en Python 3.
Alguien sugirió un duplicado. Permítanme aclarar que no estoy hablando de ignorar directamente los estándares de programación estándar. Claramente, hay una razón por la que existen esos estándares. Pero, por otro lado, ¿tiene sentido escribir código que diga OOP cuando algunas cosas estándar podrían haberse hecho, hubieran sido mucho más rápidas de escribir y hubieran tenido un nivel similar de legibilidad debido a la brevedad del ¿programa?
Hay excepciones Además, probablemente haya estándares para la programación científica más allá de los estándares simples. También estoy preguntando por eso. No se trata de si los estándares de codificación normales deben ignorarse al escribir código científico, ¡se trata de escribir un código científico limpio!
Actualizar
Solo pensé que agregaría una especie de actualización de "no una semana después". Todos sus consejos fueron extremadamente útiles. Ahora estoy usando el control de versiones - git, con git kraken para una interfaz gráfica. Es muy fácil de usar y ha limpiado mis archivos drásticamente, ya no es necesario que los archivos antiguos se queden pegados, o que las versiones antiguas de código hayan sido comentadas "por si acaso".
También instalé pylint y lo ejecuté en todo mi código. Un archivo obtuvo un puntaje negativo inicialmente; Ni siquiera estoy seguro de cómo fue posible. Mi archivo principal comenzó con una puntuación de ~ 1.83 / 10 y ahora está en ~ 9.1 / 10. Todo el código ahora se ajusta bastante bien a los estándares. También lo revisé con mis propios ojos actualizando nombres de variables que habían salido ... uhm ... mal, y buscando secciones para refactorizar.
En particular, hice una pregunta reciente en este sitio sobre la refactorización de una de mis funciones principales, y ahora es mucho más limpia y mucho más corta: en lugar de una función larga, hinchada, si / si no llena, ahora es menos de la mitad el tamaño y mucho más fácil descubrir qué está pasando.
Mi próximo paso es implementar "pruebas unitarias" de algún tipo. Con lo cual me refiero a un archivo que puedo ejecutar en mi archivo principal que analiza todas las funciones en él con declaraciones de aserción y try / exceptts, que probablemente no sea la mejor manera de hacerlo, y da como resultado una gran cantidad de código duplicado, pero seguiré leyendo e intentaré descubrir cómo hacerlo mejor.
También actualicé significativamente la documentación que ya había escrito y agregué archivos suplementarios como una hoja de cálculo de Excel, la documentación y un documento asociado al repositorio de github. Parece un proyecto de programación real ahora.
Entonces ... supongo que esto es todo para decir: gracias .