L'importance de Lint comme le pense Pythonista

introduction

Cet article est l'article du 21ème jour du Lint Advent Calendar 2016.

Même code, peu importe qui écrit

En principe, je pense qu'il est important de faire la même chose quel que soit le rédacteur afin de rendre le code hautement maintenable. Il y a eu diverses critiques à ce sujet, telles que "C'est une illusion" et "Ce n'est pas important", mais Pythonista, qui protège "Zen of Python", veut s'y tenir.

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Style Guide

Afin d'avoir «le même code, peu importe qui l'écrit», l'équipe doit décider d'un guide de style. Python a un guide de style PEP8, donc si vous personnalisez chacun en fonction de la situation basée sur ceci C'est bon.

Vous pouvez également consulter le Google Python Style Guide.

Revue de code

Une fois que vous avez un guide de style, vous pouvez l'appliquer lors de votre révision de code. Cependant, lors de la révision du code, plutôt que de passer du temps sur "veuillez unifier en guillemets simples" et "veuillez organiser l'ordre des importations", nous devrions discuter de choses plus essentielles.

Naoya en a parlé sur son blog il y a quelque temps. Trivial code review --naoya's Hatena Diary

Lorsqu'une équipe peu familiarisée avec la révision de code commence la révision de code sans aucune réflexion, elle sera signalée dans différentes tailles. À première vue, il semble que divers points ont été soulignés et que les discussions sont devenues actives, mais la plupart des discussions sont déroutantes, telles que «la largeur de retrait du code est différente» ou «le retour est omis. J'ai le retour. Dans de nombreux cas, c'est juste une question aussi triviale, comme "Je préfère" ou "Dans ce cas, il est préférable de baisser les caractères". C'est une route qui doit être empruntée une fois.

Il est inutile de discuter de telles choses sans fin. Cela ne veut rien dire, mais c'est le moins qu'on puisse dire, l'améliorer n'améliore pas du tout la qualité réelle, et si vous voulez vraiment l'avoir, vous pouvez le vérifier mécaniquement avec l'outil à peluches ou quelque chose du genre. Ce n'est pas quelque chose que les humains font.

Ce que vous devez faire est "La conception n'est pas ouverte pour l'extension et doit être ouverte" ou "Cela peut conduire à un tel problème car le cas de bord n'est pas supposé" ou "J'ai regardé le test plus tard. Il est parfois difficile pour un tiers d'interpréter les spécifications requises. " Ce sont les points qui ne peuvent être soulevés qu'en lisant correctement le code, en saisissant la structure du code et en ayant à l'esprit tout le sentiment du système autre que le code qui y est écrit.

L'important ici est

C'est une division du travail. Les humains ont un temps limité, alors automatisons ce que nous pouvons faire.

Outil à peluches

Pour les outils Lint (flake8 et pylint) en Python, il est recommandé de lire les documents suivants pour approfondir votre compréhension. Outils de refactorisation, etc.

Ici, je voudrais vous présenter ce que j'utilise habituellement dans mon travail.

en conclusion

Dans "Zen of Python"

Faisons bon usage de Lint pour mettre en pratique l'esprit de.

Recommended Posts

L'importance de Lint comme le pense Pythonista
Transition du baseball vue à partir des données
Spécifier le modèle d'éclairage du matériau SCN dans Pythonista
Obtenez le nom de la variable sous forme de chaîne de caractères.
Tweetez la probabilité de précipitations dans le cadre de la fonction de bot
Afficher le résultat de sortie de sklearn.metrics.classification_report sous forme de fichier CSV
Le début de cif2cell
le zen de Python
L'histoire de sys.path.append ()
La route vers Pythonista
La vengeance des types: la vengeance des types
Pensez à l'environnement d'analyse (Partie 1: Vue d'ensemble) * Depuis janvier 2017
Mesurer l'importance des entités avec un outil de forêt aléatoire
Afficher les horaires du système de localisation des bus Morioka dans Pythonista
Définir des informations telles que la longueur sur le bord de NetworkX
Extraire la valeur de dict ou list sous forme de chaîne de caractères
Sortie du résultat de la méthode de descente de dégradé sous forme d'animation matplotlib