Προγραμματισμός

Στυλ Python: 5 εργαλεία για τον καθαρισμό του κώδικα Python

Θεωρητικά, οποιοσδήποτε κώδικας Python είναι ΟΚ, αρκεί να είναι συντακτικά σωστός και να λειτουργεί όπως προβλεπόταν. Στην πράξη, θέλετε να υιοθετήσετε ένα συνεπές στιλ στα έργα σας, κατά προτίμηση ένα που καθοδηγείται από τις προτάσεις στυλ της Python. Τα καλά νέα είναι ότι δεν χρειάζεται να το κάνετε αυτό με το χέρι. Το οικοσύστημα Python περιέχει μια ποικιλία εργαλείων, από το εξαιρετικά επικεντρωμένο στο ευρύ φάσμα, για να διασφαλιστεί ότι ο πηγαίος κώδικας Python τηρεί τις συμβάσεις στυλ.

Σε αυτό το άρθρο θα εξετάσουμε τέσσερα δημοφιλή εργαλεία για τον έλεγχο των στυλ κώδικα Python, καθώς και ένα για τη συνεπή διαμόρφωση του κώδικα. Τα Python IDE όπως το PyCharm ή το Visual Studio Code τα υποστηρίζουν είτε εγγενώς είτε με επέκταση, ώστε να μπορούν να ενσωματωθούν εύκολα στη ροή εργασιών ανάπτυξης.

Pycodestyle

Το PEP 8 είναι το έγγραφο που περιγράφει τις συμβάσεις κωδικοποίησης της Python - τα πάντα, από το αν θα πρέπει να χρησιμοποιήσετε καρτέλες ή κενά κατά την εσοχή (χρήση τεσσάρων κενών, επίλυση προβλημάτων) έως τον τρόπο ονομασίας μεταβλητών και αντικειμένων. Το Pycodestyle είναι η ενότητα Python που ελέγχει τον κώδικα Python με βάση τις συστάσεις του PEP 8 και παραδίδει μια αναφορά για το πού βρίσκεται ο αναλυμένος κώδικας εκτός προδιαγραφών.

Το Pycodestyle δεν παρέχει αυτόματες διορθώσεις για προβλήματα. αυτό είναι πάνω σου. Αλλά το Pycodestyle είναι εξαιρετικά διαμορφώσιμο, επιτρέποντάς σας να αποκλείσετε συγκεκριμένα είδη σφαλμάτων ή να αναλύσετε μόνο συγκεκριμένα αρχεία σε ένα δέντρο προέλευσης. Και σχεδόν κάθε IDE με υποστήριξη Python υποστηρίζει επίσης το Pycodestyle, οπότε είναι η εύκολη επιλογή για καθολική συμβατότητα, αν όχι λειτουργικότητα.

Πολλοί κωδικοποιητές κώδικα Python μπορούν να λειτουργήσουν ως ενότητες στο Python και το Pycodestyle δεν αποτελεί εξαίρεση. Μπορείτε να το χρησιμοποιήσετε για να επαληθεύσετε τον κώδικα μέσω προγραμματισμού, για παράδειγμα ως μέρος μιας δοκιμαστικής σουίτας.

Καλύτερο για:Βασική επαλήθευση της συμμόρφωσης PEP 8.

Autopep8

Το Autopep8 παίρνει το σημείο όπου το Pycodestyle σταματά. Χρησιμοποιεί το Pycodestyle για να καθορίσει ποιες αλλαγές πρέπει να γίνουν και, στη συνέχεια, αναδιαμορφώνει τον κώδικα για να συμμορφώνεται με τις παρεχόμενες προτάσεις. Τα υπάρχοντα αρχεία μπορούν να αναδιαμορφωθούν στη θέση τους ή να γραφτούν σε νέα αρχεία. Το Autopep8 επιδιορθώνει επίσης μια σειρά από άλλα ζητήματα που μπορούν να περάσουν, όπως ο καθαρισμός κώδικα που μετατράπηκε από Python 2 σε Python 3 ή αρχεία που έχουν μικτούς δείκτες τερματισμού γραμμής. Και το Autoprep8 μπορεί να χρησιμοποιηθεί μέσω προγραμματισμού για τη διαμόρφωση του κώδικα που παρέχεται ως συμβολοσειρά.

Καλύτερο για: Μετατροπή αρχείων σε συμμόρφωση με PEP-8.

Νιφάδα8

Το Flake8 τυλίγει πολλά εργαλεία Pint για χνούδι και στυλ κώδικα σε ένα μόνο πακέτο. Μαζί με το PyFlakes, το οποίο χρησιμοποιεί έλεγχο σύνταξης για τον εντοπισμό βασικών σφαλμάτων και το Pycodestyle, το οποίο συζητήσαμε παραπάνω, το Flake8 παρέχει ένα επιπλέον εργαλείο για τον έλεγχο της «κυκλωματικής πολυπλοκότητας» ενός έργου - δηλαδή, τον αριθμό των ανεξάρτητων διαδρομών κώδικα που βρέθηκαν στο πρόγραμμα . (Η κυκλωματική πολυπλοκότητα είναι μια δυνητικά χρήσιμη μέτρηση, εάν θέλετε να διατηρήσετε μια βασική λειτουργική μονάδα πολύ μη βασική, για παράδειγμα.) Στο τέλος κάθε ανάλυσης, το Flake8 παρέχει μια μετρική εκατοστημόρια για τη συνολική ποιότητα του αναλυθέντος κώδικα, ένα εύχρηστο τρόπος για να πάρετε μια γρήγορη ιδέα για ποια μέρη μιας βάσης κώδικα είναι πιο προβληματικά.

Το Flake8 διαθέτει επίσης σύστημα plug-in, οπότε το χνούδι μπορεί να συνδυαστεί με Git commits ή άλλες αυτοματοποιημένες ενέργειες - για παράδειγμα, για την τροφοδοσία προβληματικού κώδικα σε έναν αναδιαμορφωτή.

Καλύτερο για:Αξιολόγηση της συνολικής ποιότητας του κώδικα, με συγκεκριμένες προτάσεις.

Πυλώνας

Το Pylint είναι ίσως το πιο ευρέως χρησιμοποιούμενο και υποστηριζόμενο Linter Python εκεί έξω. Όπως και τα άλλα, αναζητά σφάλματα και αποκλίσεις από τα πρότυπα κωδικοποίησης στον κώδικα Python και προσφέρει αλλαγές στον τρόπο διόρθωσης αυτών των λαθών.

Το Pylint είναι επίσης αναμφισβήτητα το πιο ολοκληρωτής των ελεγκτών κώδικα, με την έννοια ότι μπορεί να σας προειδοποιήσει για πάρα πολλά ζητήματα με τον κώδικά σας, ορισμένα από τα οποία ενδέχεται να μην είναι καν σχετικά με το συγκεκριμένο περιβάλλον σας. Τα αποτελέσματα μπορεί να είναι λεκτικά, αλλά μπορούν επίσης να προσαρμοστούν ώστε να ταιριάζουν με τις ιδιαιτερότητες ενός συγκεκριμένου έργου.

Η Pylint αναζητά πέντε προοδευτικά πιο προβληματικές κατηγορίες θεμάτων. Οι «Συμβάσεις» είναι παραβιάσεις του PEP 8 ή άλλων κανόνων συνοχής στο Python. Τα "Refactors" υποδηλώνουν μυρωδιές κώδικα, κοινά λάθη ή κώδικες που θα μπορούσαν να επεξεργαστούν για να είναι πιο αποτελεσματικοί ή λιγότερο μπερδεμένοι, όπως κυκλικές εισαγωγές ή αρχεία με πάρα πολλές παρόμοιες γραμμές που μπορούν να συμπυκνωθούν σε μια κοινή λειτουργία. Οι "Προειδοποιήσεις" είναι ζητήματα ειδικά για Python, όπως κώδικας που δεν είναι προσβάσιμος (όλα μετά από έναΕΠΙΣΤΡΟΦΗ σε μια συνάρτηση) ή κλάσεις που λείπουν ένα__μέσα σε αυτό__ μέθοδος. Τα "Σφάλματα" είναι πραγματικά σφάλματα κώδικα, όπως οι μη καθορισμένες μεταβλητές και τα προβλήματα "Fatal" είναι αυτά που εμποδίζουν την εκτέλεση του Pylint.

Και πάλι, αυτό που κάνει το Pylint τόσο πιο χρήσιμο όσο και το πιο βαρύ βάρος είναι το ποσό των σχολίων που δίνει. Τα καλά νέα είναι ότι για όσους θέλουν να το συντονίσουν, η ευγένεια και η ευκρίνεια του Pylint μπορούν να τροποποιηθούν ανά έργο ή ακόμα και ανά αρχείο. Επιπλέον, μπορείτε να αντλήσετε μια σειρά από προσθήκες Pylint που προσθέτουν συγκεκριμένα είδη ελέγχων, όπως για κώδικα που είναι πολύ περίπλοκος (μεγάλες αλυσίδεςανs, κ.λπ.) ή χνούδι για ενσωματωμένα ενσωματωμένα.

Καλύτερο για:Έλεγχος ποιότητας Soup-to-nuts για κωδικό, υποθέτοντας ότι δεν σας πειράζει να τροποποιήσετε τις ρυθμίσεις του για να αποφύγετε την υπερφόρτωση.

Μαύρος

Το μαύρο δεν είναι ένα εργαλείο ανάλυσης κώδικα ή linter, αλλά ένα εργαλείο για την επιβολή του στυλ ως τρόπο διασφάλισης καλύτερης ποιότητας κώδικα. Για αυτόν τον λόγο, κάθεται άνετα μαζί με τα άλλα εργαλεία που περιγράφονται εδώ, καθώς είναι ένας τρόπος να αποφευχθούν προληπτικά πολλά βασικά λάθη στυλ.

Το μαύρο περιγράφεται ως «ο διαμορφωτής κώδικα χωρίς συμβιβασμούς» - χωρίς συμβιβασμούς επειδή δεν έχει επιλογές ρύθμισης εκτός από το μήκος της γραμμής. Μαύρο αναδιαμορφώστε τον κώδικα Python σε ένα μοναδικό, συνεπές και ευανάγνωστο στυλ, αντλώντας από εσωτερικούς κανόνες για τον χειρισμό δύσκολων προβλημάτων, όπως οι πολυγραμμικές εκφράσεις, οπότε ακόμη και αυτά αναδιαμορφώνονται με συνέπεια.

Ένα αξιοσημείωτο πλεονέκτημα στη χρήση του Black είναι ότι επιλύει όλες τις διαφορές σχετικά με τη μορφοποίηση, εξαλείφοντας έτσι το "bikeshedding" και καθιστά επίσης την έξοδο linter λιγότερο θορυβώδη. Δεν χρειάζεται να αμφισβητήσετε πώς να μορφοποιήσετε κώδικα για ένα έργο ή ακόμη και να το κάνετε μεγάλο μέρος του χειροκίνητα. Απλά χρησιμοποιείτε το Black και τελειώστε με αυτό. μπορείτε ακόμη και να διαμορφώσετε πολλά IDE ώστε να μορφοποιούν αυτόματα τον κώδικα με το Μαύρο. Ένα άλλο πλεονέκτημα που ισχυρίζεται είναι ότι κάνεισκατά δεσμεύει καθαρότερα, καθώς μειώνει τον αριθμό των αλλαγών που πραγματοποιούνται σε οποιοδήποτε δεδομένο αρχείο.

Καλύτερο για: Κτυπώντας βάσεις κώδικα σε βασική στιλιστική συμμόρφωση μαζικά.

Πώς να κάνετε περισσότερα με την Python:

  • Πώς να εργαστείτε με τον τύπο δεδομένων λίστας Python
  • Τρόπος συσκευασίας εφαρμογών Python με BeeWare Briefcase
  • Πώς να τρέξετε το Anaconda δίπλα-δίπλα με άλλους Pythons
  • Πώς να χρησιμοποιήσετε γυαλιά ηλίου Python
  • Ξεκινήστε με το async στο Python
  • Πώς να χρησιμοποιήσετε το asyncio στο Python
  • 3 βήματα για μια αναθεώρηση ασύγχρονου Python
  • Πώς να χρησιμοποιήσετε το PyInstaller για να δημιουργήσετε εκτελέσιμα Python
  • Εκμάθηση Cython: Πώς να επιταχύνετε το Python
  • Πώς να εγκαταστήσετε το Python με τον έξυπνο τρόπο
  • Πώς να διαχειριστείτε τα έργα Python με το Poetry
  • Πώς να διαχειριστείτε τα έργα Python με το Pipenv
  • Virtualenv και venv: Εξηγήθηκαν εικονικά περιβάλλοντα Python
  • Το Python virtualenv και το venv κάνουν και δεν πρέπει
  • Η εξήγηση και οι υποεπεξεργασίες Python εξηγούνται
  • Πώς να χρησιμοποιήσετε το πρόγραμμα εντοπισμού σφαλμάτων Python
  • Πώς να χρησιμοποιήσετε το χρονοδιάγραμμα για τον προφίλ κώδικα Python
  • Πώς να χρησιμοποιήσετε το cProfile για να προβάλετε τον κώδικα Python
  • Πώς να μετατρέψετε το Python σε JavaScript (και να επιστρέψετε ξανά)
$config[zx-auto] not found$config[zx-overlay] not found