Je n'écris pas vraiment de grands projets. Je ne maintiens pas une base de données volumineuse ni des millions de lignes de code.
Mon code est principalement du type "script" - des éléments pour tester des fonctions mathématiques ou pour simuler quelque chose - de "programmation scientifique". Les programmes les plus longs sur lesquels j'ai travaillé jusqu'ici comptent quelques centaines de lignes de code et la plupart des programmes sur lesquels je travaille tournent autour de 150.
Mon code est aussi la merde. J'ai réalisé cela l'autre jour alors que j'essayais de trouver un fichier que j'ai écrit il y a quelque temps, mais que j'ai probablement écrasé et que je n'utilise pas le contrôle de version, ce qui fait que beaucoup d'entre vous sont affolés de stupidité.
Le style de mon code est compliqué et est rempli de commentaires obsolètes indiquant des manières alternatives de faire quelque chose ou de lignes de code copiées. Bien que les noms de variables soient toujours très descriptifs au début, au fur et à mesure que j'ajoute ou modifie des éléments, par exemple, quelque chose de nouveau que quelqu'un souhaite tester, le code se superpose et est écrasé. avoir un cadre, je commence à utiliser des noms de variables de merde et le fichier va au pot.
Dans le projet sur lequel je travaille actuellement, je suis dans la phase où tout cela revient à me mordre fort. Mais le problème est (mis à part le contrôle de version, la création d'un nouveau fichier pour chaque nouvelle itération et son enregistrement quelque part dans un fichier texte, ce qui aidera probablement considérablement la situation). Je ne sais pas vraiment comment procéder pour améliorer mon style de codage actuel.
Des tests unitaires sont-ils nécessaires pour écrire de plus petits morceaux de code? Qu'en est-il de la POO? Quelles sortes d'approches sont bonnes pour écrire du code bon et propre rapidement lors de la "programmation scientifique" par opposition au travail sur des projets plus importants?
Je pose ces questions parce que souvent, la programmation elle-même n'est pas très complexe. C'est plus sur les mathématiques ou les sciences que je teste ou que je fais de la recherche avec la programmation. Par exemple, une classe est-elle nécessaire lorsque deux variables et une fonction pourraient probablement s'en occuper? (Pensez que ce sont généralement des situations dans lesquelles la vitesse du programme est préférable pour être plus rapide - lorsque vous exécutez plus de 25 000 000 pas de temps d'une simulation, vous voulez plutôt que ce soit le cas.)
C'est peut-être trop large, et si oui, je m'excuse, mais en regardant les livres de programmation, ils semblent souvent être adressés à des projets plus importants. Mon code n'a pas besoin de la POO, et il est déjà sacrément court, donc ce n'est pas comme "oh, mais le fichier sera réduit de mille lignes si nous faisons cela!" Je veux savoir comment "recommencer" et programmer proprement sur ces projets plus petits et plus rapides.
Je serais heureux de fournir des détails plus spécifiques, mais plus les conseils sont généraux, plus ils me seront utiles. Je programme en Python 3.
Quelqu'un a suggéré un duplicata. Permettez-moi de préciser que je ne parle pas d'ignorer les normes de programmation standard. De toute évidence, il existe une raison pour que ces normes existent. Mais d’autre part, est-il vraiment judicieux d’écrire du code dit OO alors que des tâches standard auraient pu être faites, auraient été beaucoup plus rapides à écrire et auraient eu un niveau de lisibilité similaire en raison de la brièveté de la programme?
Il y a des exceptions. De plus, il existe probablement des normes pour la programmation scientifique qui vont au-delà des simples normes. Je parle de ceux-là aussi. Il ne s’agit pas de savoir si les normes de codage normales doivent être ignorées lors de l’écriture de code scientifique, mais bien d’écrire du code scientifique propre!
Mise à jour
Je pensais juste que j'ajouterais une sorte de mise à jour "pas tout à fait une semaine plus tard". Tous vos conseils ont été extrêmement utiles. J'utilise maintenant le contrôle de version - git, avec git kraken pour une interface graphique. Il est très facile à utiliser et a considérablement nettoyé mes fichiers - plus besoin d’anciens fichiers collés, ni d’anciennes versions de code commentées "au cas où".
J'ai également installé pylint et l'ai exécuté sur tout mon code. Un fichier a obtenu un score négatif au départ; Je ne sais même pas comment cela a été possible. Mon fichier principal a démarré à un score de ~ 1,83 / 10 et se situe maintenant à ~ 9,1 / 10. Tout le code est maintenant assez bien conforme aux normes. Je l'ai aussi parcouru de mes propres yeux en mettant à jour les noms de variables qui avaient disparu ... euh ... de travers, et en cherchant des sections à refactoriser.
En particulier, sur ce site, j’ai posé une question récente sur la refactorisation d’une de mes fonctions principales. C’est maintenant beaucoup plus propre et beaucoup plus court: au lieu d’une fonction longue et gonflée, si remplie, elle est maintenant inférieure à la moitié. la taille et beaucoup plus facile à comprendre ce qui se passe.
Ma prochaine étape est la mise en œuvre de "tests unitaires". J'entends par fichier un fichier que je peux exécuter sur mon fichier principal et qui examine toutes les fonctions qu'il contient avec des instructions assert et try / excepts, ce qui n'est probablement pas la meilleure façon de le faire et qui génère beaucoup de code en double, mais je vais continuer à lire et essayer de trouver comment mieux le faire.
J'ai également considérablement mis à jour la documentation que j'avais déjà écrite et ajouté des fichiers supplémentaires, tels qu'un tableur Excel, la documentation et un document associé dans le référentiel github. Cela ressemble un peu à un vrai projet de programmation maintenant.
Donc ... je suppose que tout cela est pour dire: merci .