Πώς να διαμορφώσετε αυτόματα τον κώδικα Python με μαύρο

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

Εάν γράψετε ένα μικρό πρόγραμμα (με 1000 γραμμές κωδικών), πιθανότατα μπορείτε να ξεφύγετε χωρίς να μορφοποιήσετε τον κωδικό σας.

Όμως, καθώς τα προγράμματα γίνονται όλο και πιο περίπλοκα, γίνονται όλο και πιο δύσκολα κατανοητά. Σε κάποιο σημείο (περίπου 15.000 γραμμές κώδικα), γίνεται πιο δύσκολο να κατανοήσετε τον κώδικα που γράψατε εσείς ο ίδιος.

Η διαφορά μεταξύ της εργασίας σε κώδικα με καλή μορφοποίηση και της επεξεργασίας κώδικα με κακή μορφή είναι σαν τη διαφορά μεταξύ της διαμονής σε ένα παλάτι και της διαμονής σε ένα βρώμικο σπίτι.

Γιατί είναι σημαντική η διαμόρφωση του κώδικα python

Ευανάγνωστο

Η μορφοποίηση του κωδικού σας θα σας βοηθήσει να διαβάσετε τον κωδικό σας αποτελεσματικά . Φαίνεται πιο οργανωμένο και όταν κάποιος κοιτάξει τον κωδικό σας θα έχει καλή εντύπωση.

Θα βοηθήσει στις συνεντεύξεις κωδικοποίησης

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

Υποστήριξη ομάδας

Η μορφοποίηση του κωδικού σας γίνεται πιο σημαντική όταν εργάζεστε σε μια ομάδα . Πολλοί άνθρωποι πιθανότατα εργάζονται στο ίδιο έργο λογισμικού και ο κωδικός που γράφετε πρέπει να γίνει κατανοητός από τους συμπαίκτες σας. Διαφορετικά, γίνεται πιο δύσκολο να συνεργαστούμε.

Διευκολύνει τον εντοπισμό σφαλμάτων

Ο κώδικας με λανθασμένη μορφή μπορεί να τον κάνει πολύ, πολύ δύσκολο να εντοπίσει σφάλματα ή ακόμα και να εργαστεί σε ένα πρόγραμμα. Είναι επίσης πολύ φρικτό να το δεις. Είναι αδίκημα στα μάτια σας.

Pylint και Flake8

Οι περισσότεροι προγραμματιστές της Python απολαμβάνουν τη χρήση Pylint ή Flake8 για να ελέγξουν τον κώδικά τους για σφάλματα και οδηγούς στυλ.

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

Το Flake8 είναι μια βιβλιοθήκη Python που τυλίγει το σενάριο PyFlakes , pycodestyle και το McCabe του Ned Batchelder . Είναι μια εξαιρετική εργαλειοθήκη για τον έλεγχο της βάσης του κώδικα σας έναντι του στυλ κωδικοποίησης (PEP8) , σφαλμάτων προγραμματισμού όπως "εισαγωγή βιβλιοθήκης αλλά αχρησιμοποίητη", "Απροσδιόριστο όνομα" και κωδικός που δεν έχει εσοχή.

Το πρόβλημα είναι ότι αυτά τα εργαλεία αναφέρουν μόνο τα προβλήματα που εντοπίζουν στον πηγαίο κώδικα και αφήνουν το βάρος στους προγραμματιστές της Python για να τα διορθώσουν!

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

Εισαγωγή στο Μαύρο

Από το έργο README:

Χρησιμοποιώντας το Black , συμφωνείτε να παραχωρήσετε τον έλεγχο των λεπτομερειών της χειρομόρφωσης. Σε αντάλλαγμα, το Black σάς προσφέρει ταχύτητα, ντετερμινισμό και ελευθερία από το pycodestyle να ενοχλεί τη μορφοποίηση. Θα εξοικονομήσετε χρόνο και ψυχική ενέργεια για πιο σημαντικά θέματα.

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

Ας δούμε λοιπόν πώς να το χρησιμοποιήσουμε.

Εγκατάσταση Black

Το Black μπορεί να εγκατασταθεί εκτελώντας pip install black. Απαιτεί την εκτέλεση του Python 3.6.0+. Μόλις εγκατασταθεί το Black, θα έχετε στη διάθεσή σας ένα νέο εργαλείο γραμμής εντολών που ονομάζεται μαύρο στο κέλυφος σας και είστε έτοιμοι να ξεκινήσετε!

Για να ξεκινήσετε αμέσως με τις λογικές προεπιλογές, επιλέξτε το αρχείο python που θέλετε να μορφοποιήσετε και, στη συνέχεια, γράψτε μαύρο όνομα αρχείου.py στο τερματικό. Στη συνέχεια, το Black θα διαμορφώσει το αρχείο python.

Τώρα θα δούμε τι μπορεί να μας βοηθήσει ο Μαύρος.

Διαμορφώστε ένα μεμονωμένο αρχείο

Ας δούμε αυτό το απλό παράδειγμα: εδώ είναι οι δύο συναρτήσεις python στο αρχείο python που ονομάζεται sample_code.py.

Μπορείτε να χρησιμοποιήσετε black sample_code.pyστο τερματικό για να αλλάξετε τη μορφή. Αφού εκτελέσετε το Black, θα δείτε την ακόλουθη έξοδο:

Στη συνέχεια, μπορείτε να ανοίξετε το sample_code.py για να δείτε μορφοποιημένο κώδικα python:

Ο κώδικας Python έχει πλέον μορφοποιηθεί και είναι πιο αναγνώσιμος.

Μορφοποίηση πολλαπλών αρχείων

Για να μορφοποιήσετε περισσότερα από ένα αρχεία python, γράψτε black folder_name/στο τερματικό.

Αναδιαμορφώθηκαν τρία αρχεία python στο φάκελο με το όνομα python_with_black.

Έλεγχος αρχείων για μορφοποίηση

Εάν δεν θέλετε το Black να αλλάξει το αρχείο σας, αλλά θέλετε να μάθετε αν το Black πιστεύει ότι ένα αρχείο πρέπει να αλλάξει, μπορείτε να χρησιμοποιήσετε μία από τις ακόλουθες εντολές:

black --check .: Αυτό θα ελέγξει ποια αρχεία python μπορούν να μορφοποιηθούν στον τρέχοντα φάκελο (αλλά δεν τροποποιεί πραγματικά τα αρχεία python).

black --check --diff file_name.py : Αυτό δείχνει τι πρέπει να γίνει στο αρχείο αλλά δεν τροποποιεί το αρχείο.

Αλλαγή αριθμού χαρακτήρων ανά γραμμή

Σημειώστε ότι το Black προεπιλογή σε 88 χαρακτήρες για το μήκος της γραμμής του, αλλά μπορείτε να το αλλάξετε χρησιμοποιώντας την επιλογή "-l" ή "- -line-length".

Για παράδειγμα, για να αλλάξετε σε 60 χαρακτήρες: black -l 60 python_file.py.

Μαύρο σε σημειωματάριο Jupyter

Για χρήστες σημειωματάριων Jupyter, μπορείτε να διαμορφώσετε αυτόματα τον κώδικα python με αυτήν την απλή επέκταση που ονομάζεται Jupyter Black. Αυτή η επέκταση αναδιαμορφώνει / κωδικοποιεί τον κώδικα στο κελί κώδικα ενός φορητού υπολογιστή με μαύρο.

Η επέκταση Jupyter Black παρέχει

  • Ένα κουμπί γραμμής εργαλείων.
  • Μια συντόμευση πληκτρολογίου για τη διαμόρφωση του τρέχοντος κελιού κώδικα (προεπιλογή: Ctrl-B).
  • Μια συντόμευση πληκτρολογίου για τη διαμόρφωση ολόκληρων κελιών κώδικα (προεπιλογή: Ctrl-Shift-B).

Εγκαταστήστε το Jupyter Black

Πρώτα βεβαιωθείτε ότι έχετε εγκαταστήσει jupyter-contrib-nbextensions και black και, στη συνέχεια, εκτελέστε τις ακόλουθες εντολές.

jupyter nbextension install //github.com/drillan/jupyter-black/archive/master.zip — user

Στη συνέχεια, ενεργοποιήστε την επέκταση εκτελώντας:

jupyter nbextension enable jupyter-black-master/jupyter-black 

Τώρα μπορείτε να ξεκινήσετε τη μορφοποίηση του κώδικα python σε κάθε κελί φορητού υπολογιστή.

Αρχικά, επιλέξτε το κελί του φορητού υπολογιστή που θέλετε να μορφοποιήσετε τον κωδικό python και, στη συνέχεια, κάντε κλικ στο κουμπί επέκτασης που ονομάζεται Μαύρο.

Στη συνέχεια, κάντε κλικ στο κουμπί Jupyter Black:

Ενσωμάτωση συντάκτη

Μπορείτε να ενσωματώσετε το Black με τους αγαπημένους σας συντάκτες. Προς το παρόν, το Black υποστηρίζει PyCharm / IntelliJ IDEA, Wing IDE, Vim, Visual Studio Code, Sublime Text 3, Atom / Nuclide, Kakoune και Thonny. Ακολουθήστε τις οδηγίες εδώ για να ενσωματώσετε το Black στον αγαπημένο σας επεξεργαστή.

Αν θέλετε να μάθετε περισσότερα για το Black, σας συνιστώ να παρακολουθήσετε τη συζήτηση PyCon 2019 από τον Łukasz Langa.

Εάν μάθατε κάτι νέο ή σας άρεσε να διαβάζετε αυτό το άρθρο, μοιραστείτε το έτσι ώστε να μπορούν να το δουν άλλοι. Μέχρι τότε, θα τα δούμε στην επόμενη ανάρτηση! Μπορώ επίσης να έχω πρόσβαση στο Twitter @Davis_McDavid.