เครื่องมือจัดรูปแบบ Makefile ที่พัฒนาด้วย Python ก่อให้เกิดการถกเถียงเรื่องการรวม .PHONY และการเลือกใช้ภาษา

ทีมชุมชน BigGo
เครื่องมือจัดรูปแบบ Makefile ที่พัฒนาด้วย Python ก่อให้เกิดการถกเถียงเรื่องการรวม .PHONY และการเลือกใช้ภาษา

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

ตัวเลือกการติดตั้ง:

  • PyPI: pip install mblike
  • VSCode Extension: ค้นหา "Makefile Formatter" ใน Extensions
  • จาก Source: Clone จาก GitHub และรัน make install

ข้อถกเถียงเรื่องการประกาศ .PHONY

การถกเถียงที่ร้อนแรงที่สุดมุ่งเน้นไปที่แนวทางของ mblike ในการรวมการประกาศ .PHONY เครื่องมือนี้จัดกลุ่ม .PHONY targets หลายตัวเข้าด้วยกันในการประกาศเดียว แต่นักพัฒนาหลายคนต่อต้านแนวปฏิบัตินี้อย่างแรง นักวิจารณ์โต้แย้งว่าการประกาศ .PHONY ควรอยู่ใกล้เคียงกับ targets ที่เกี่ยวข้องเพื่อให้อ่านและดูแลรักษาได้ดีกว่า ความไม่เห็นด้วยพื้นฐานนี้เน้นให้เห็นถึงความแตกแยกทางปรัชญาที่ลึกซึ้งในชุมชน Makefile เกี่ยวกับหลักการจัดระเบียบโค้ด

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

ตัวเลือกการกำหนดค่า:

{
  use_tabs: true,
  tab_width: 1,
  space_around_assignment: true,
  space_around_colon: true,
  insert_missing_phony: true,
  remove_trailing_whitespace: true,
  group_phony_declarations: false  // สามารถปิดการรวมกลุ่มได้
}

การพัฒนาด้วย Python ได้รับปฏิกิริยาที่หลากหลาย

การเลือกใช้ Python ในการพัฒนา mblike ได้สร้างการอภิปรายที่สำคัญเกี่ยวกับการแจกจ่ายเครื่องมือและประสิทธิภาพ แม้ว่า Python จะมีความสามารถในการจัดการสตริงที่ยอดเยี่ยมและชุมชนนักพัฒนาที่ใหญ่ แต่นักวิจารณ์ชี้ไปที่ความซับซ้อนในการติดตั้งและปัญหาการจัดการ dependencies เครื่องมือนี้ต้องการการติดตั้งผ่าน pip ซึ่งแยกผู้ใช้ที่อาจใช้ได้หลายคนที่ไม่มีเครื่องมือจัดการแพ็กเกจ Python ที่พร้อมใช้งาน

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

Make ในฐานะ Task Runner ก่อให้เกิดการอภิปรายในวงกว้าง

การเปิดตัวเครื่องมือนี้ยังได้จุดประกายการถกเถียงใหม่เกี่ยวกับบทบาทของ Make ในการพัฒนาสมัยใหม่ แม้ว่า Make จะถูกออกแบบมาเพื่อการจัดการ file dependency ตามวันที่แก้ไข แต่นักพัฒนาหลายคนใช้มันเป็น task runner ทั่วไป วิวัฒนาการนี้ได้สร้างความตึงเครียดระหว่างผู้บริสุทธิ์ที่ต้องการใช้ Make ตามวัตถุประสงค์ที่ตั้งใจไว้และผู้ปฏิบัติที่ชื่นชมความแพร่หลายและความเรียบง่าย

Make อยู่ใน POSIX ดังนั้นจึงมีให้ใช้โดยทั่วไป เหตุผลเดียวกับที่ผู้คนเขียน shell scripts

การอภิปรายเผยให้เห็นว่านักพัฒนาหลายคนให้ความสำคัญกับความพร้อมใช้งานสากลของ Make มากกว่า task runners ที่เฉพาะเจาะจงมากกว่า แม้ในขณะที่ยอมรับข้อจำกัดสำหรับขั้นตอนการทำงานที่ซับซ้อน

กฎการจัดรูปแบบหลัก:

  • การเยื้อง: บังคับใช้ 1 tab แทนการใช้ spaces
  • ตัวดำเนินการกำหนดค่า: ปรับให้เป็นมาตรฐานการเว้นวรรครอบ =, :=, ::=
  • เครื่องหมายโคลอนเป้าหมาย: จัดการการเว้นวรรครอบเครื่องหมายโคลอนของ dependency
  • ช่องว่างท้าย: ลบช่องว่างท้ายที่ไม่จำเป็น
  • การประกาศ .PHONY: จัดกลุ่มและรวมการประกาศ (สามารถกำหนดค่าได้)

คุณสมบัติการตรวจจับอัจฉริยะแสดงให้เห็นความหวัง

แม้จะมีข้อถกเถียง แต่ความสามารถในการตรวจจับ .PHONY อัจฉริยะของ mblike ได้รับความสนใจ เครื่องมือนี้ใช้การวิเคราะห์แบบไดนามิกเพื่อระบุ phony targets ที่หายไปโดยการตรวจสอบคำสั่ง recipe แทนที่จะพึ่งพาแนวทางการตั้งชื่อ แนวทางนี้สามารถตรวจจับ targets ที่ทำการกระทำเช่นการรัน Docker commands หรือการดำเนินการ cleanup scripts โดยอัตโนมัติ ซึ่งอาจช่วยประหยัดเวลาของนักพัฒนาและลดข้อผิดพลาด

เครื่องมือนี้ยังมีกฎการจัดรูปแบบที่ครอบคลุมสำหรับการเยื้อง การเว้นวรรค และการจัดการ line continuation คุณสมบัติเหล่านี้แก้ไขจุดเจ็บปวดทั่วไปในการดูแลรักษา Makefile แม้ว่าการรวม .PHONY จะยังคงเป็นที่ถกเถียง

ปฏิกิริยาของชุมชนต่อ mblike สะท้อนถึงความตึงเครียดที่กว้างขึ้นในการพัฒนาซอฟต์แวร์ระหว่างการทำงานอัตโนมัติและการควบคุมด้วยตนเอง ระหว่างความสะดวกและประสิทธิภาพ และระหว่างแนวปฏิบัติที่ยอมรับและแนวทางใหม่ แม้ว่าเครื่องมือนี้อาจไม่ตอบสนองความต้องการของทุกคน แต่มันแสดงถึงก้าวต่อไปในวิวัฒนาการที่ต่อเนื่องของเครื่องมือพัฒนาสำหรับหนึ่งในระบบ build ที่ยั่งยืนที่สุดของคอมพิวเตอร์

อ้างอิง: mblike