เครื่องมือใหม่ที่พัฒนาด้วย 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