วิธีจัดรูปแบบรหัส Python ของคุณโดยอัตโนมัติด้วย Black

การเขียนโค้ด Python เป็นสิ่งหนึ่งและการเขียนโค้ดในรูปแบบที่ดีก็เป็นอีกสิ่งหนึ่ง โปรแกรมเมอร์รุ่นเยาว์มักให้ความสำคัญกับการตรวจสอบให้แน่ใจว่าโค้ดของพวกเขาใช้งานได้และลืมจัดรูปแบบโค้ดให้ถูกต้องตลอดการ

หากคุณเขียนโปรแกรมขนาดเล็ก (ด้วยรหัส 1,000 บรรทัด) คุณอาจจะหนีไปได้โดยไม่ต้องจัดรูปแบบโค้ดของคุณ

แต่เมื่อโปรแกรมต่างๆซับซ้อนขึ้นเรื่อย ๆ โปรแกรมก็จะเข้าใจยากขึ้นและยากขึ้น ในบางจุด (โค้ดประมาณ 15,000 บรรทัด) การทำความเข้าใจโค้ดที่คุณเขียนเองก็ยากขึ้น

ความแตกต่างระหว่างการทำงานกับโค้ดที่มีรูปแบบดีและการทำงานกับโค้ดที่มีรูปแบบไม่ดีก็เหมือนกับความแตกต่างระหว่างการใช้ชีวิตในวังและการอยู่ในบ้านสกปรก

เหตุใดการจัดรูปแบบรหัส python ของคุณจึงมีความสำคัญ

ความสามารถในการอ่าน

การจัดรูปแบบรหัสของคุณจะช่วยให้คุณอ่านรหัสของคุณได้อย่างมีประสิทธิภาพ มันดูเป็นระเบียบมากขึ้นและเมื่อมีคนดูโค้ดของคุณก็จะได้รับความประทับใจที่ดี

มันจะช่วยในการสัมภาษณ์การเขียนโค้ดของคุณ

เมื่อคุณกำลังสัมภาษณ์การเขียนโค้ดบางครั้งผู้สัมภาษณ์จะสนใจว่าคุณกำลังจัดรูปแบบโค้ดของคุณอย่างถูกต้องหรือไม่ หากคุณลืมจัดรูปแบบดังกล่าวคุณอาจสูญเสียโอกาสในการทำงานไปเพียงเพราะรหัสที่จัดรูปแบบไม่ดี

การสนับสนุนทีม

การจัดรูปแบบรหัสของคุณกลายเป็นสิ่งสำคัญมากขึ้นเมื่อคุณกำลังทำงานในทีม มีหลายคนที่ทำงานในโครงการซอฟต์แวร์เดียวกันและเพื่อนร่วมทีมต้องเข้าใจโค้ดที่คุณเขียน มิฉะนั้นจะทำงานร่วมกันได้ยากขึ้น

ช่วยให้สังเกตเห็นจุดบกพร่องได้ง่าย

โค้ดที่มีการจัดรูปแบบไม่ถูกต้องสามารถทำให้มันยากที่จะสังเกตเห็นจุดบกพร่องหรือแม้แต่ทำงานกับโปรแกรม มันยังดูน่ากลัวจริงๆ เป็นความผิดต่อดวงตาของคุณ

ไพลินท์และเกล็ด 8

นักพัฒนา Python ส่วนใหญ่ชอบใช้ Pylint หรือ Flake8 เพื่อตรวจสอบข้อผิดพลาดและคำแนะนำสไตล์ของโค้ด

Pylintเป็นเครื่องมือที่ใช้ตรวจสอบข้อผิดพลาดใน Python พยายามบังคับใช้มาตรฐานการเข้ารหัสและค้นหากลิ่นของรหัส นอกจากนี้ยังสามารถค้นหาข้อผิดพลาดบางประเภทสามารถแนะนำคำแนะนำเกี่ยวกับวิธีการปรับโครงสร้างบล็อกโดยเฉพาะและสามารถให้รายละเอียดเกี่ยวกับความซับซ้อนของโค้ด

Flake8เป็นห้องสมุดหลามที่ล้อม pyflakes , pycodestyleและสคริปต์ McCabe เน็ด Batchelder ของ เป็นชุดเครื่องมือที่ยอดเยี่ยมสำหรับการตรวจสอบฐานรหัสของคุณเทียบกับรูปแบบการเข้ารหัส (PEP8)ข้อผิดพลาดในการเขียนโปรแกรมเช่น "ไลบรารีที่นำเข้า แต่ไม่ได้ใช้" "ชื่อที่ไม่ได้กำหนด" และรหัสที่ไม่เยื้อง

ปัญหาคือเครื่องมือเหล่านี้รายงานเฉพาะปัญหาที่ระบุในซอร์สโค้ดเท่านั้นและปล่อยภาระให้นักพัฒนา Python แก้ไข!

แต่ถ้าเรามีเครื่องมือที่สามารถระบุและแก้ปัญหาไปพร้อม ๆ กันล่ะ? Blackเป็นเครื่องมือที่ช่วยให้คุณระบุข้อผิดพลาดและจัดรูปแบบโค้ด python ของคุณได้ในเวลาเดียวกัน ดังนั้นจึงทำให้คุณมีประสิทธิผลมากขึ้น

รู้เบื้องต้นเกี่ยวกับสีดำ

จากโครงการ README:

การใช้สีดำแสดงว่าคุณยินยอมที่จะยกระดับการควบคุมข้อเล็ก ๆ น้อย ๆ ของการจัดรูปแบบด้วยมือ ในทางกลับกันสีดำช่วยให้คุณมีความเร็วความมุ่งมั่นและอิสระจากการจู้จี้จุกจิกเกี่ยวกับการจัดรูปแบบ คุณจะประหยัดเวลาและพลังใจสำหรับเรื่องที่สำคัญกว่า

สีดำสามารถฟอร์แมตไฟล์ทั้งหมดของคุณใหม่ได้ตามสไตล์ Black code ช่วยให้สมองของคุณจดจ่ออยู่กับปัญหาที่คุณต้องการแก้ไขและเขียนโค้ดโซลูชันแทนที่จะถูกกวนใจจากโครงสร้างโค้ดและความแตกต่างของรูปแบบเล็กน้อย

งั้นมาดูวิธีใช้กันเลย

ติดตั้งสีดำ

pip install blackสีดำสามารถติดตั้งได้โดยการเรียกใช้ ต้องใช้ Python 3.6.0+ เพื่อรัน เมื่อติดตั้ง Black แล้วคุณจะมีเครื่องมือบรรทัดคำสั่งใหม่ที่เรียกว่า black ในเชลล์ของคุณและคุณก็พร้อมที่จะเริ่มแล้ว!

ในการเริ่มต้นทันทีด้วยค่าเริ่มต้นที่สมเหตุสมผลให้เลือกไฟล์ python ที่คุณต้องการจัดรูปแบบจากนั้นเขียนfilename.py สีดำในเทอร์มินัล จากนั้น Black จะจัดรูปแบบไฟล์ python ของคุณ

ตอนนี้เราจะมาดูกันว่า Black สามารถช่วยเราทำอะไรได้บ้าง

จัดรูปแบบไฟล์เดียว

ลองดูตัวอย่างง่ายๆนี้: นี่คือฟังก์ชัน 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 จากนั้นคลิกปุ่มส่วนขยายที่เรียกว่า Black

จากนั้นคลิกปุ่ม Jupyter Black:

การรวมบรรณาธิการ

คุณสามารถรวม Black เข้ากับบรรณาธิการที่คุณชื่นชอบได้ ปัจจุบัน Black รองรับ PyCharm / IntelliJ IDEA, Wing IDE, Vim, Visual Studio Code, Sublime Text 3, Atom / Nuclide, Kakoune และ Thonny ทำตามคำแนะนำที่นี่เพื่อรวม Black เข้ากับโปรแกรมแก้ไขที่คุณชื่นชอบ

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Black ฉันขอแนะนำให้ดู PyCon 2019 talk โดยŁukasz Langa

หากคุณได้เรียนรู้สิ่งใหม่ ๆ หรือชอบอ่านบทความนี้โปรดแบ่งปันเพื่อให้คนอื่นได้เห็น ก่อนหน้านี้เจอกันใหม่โพสต์หน้า! ฉันสามารถติดต่อได้ทาง Twitter @Davis_McDavid