กฎง่ายๆของฉันคือเมื่อฉันต้องทำอะไรเป็นครั้งที่สามถึงเวลาแล้วที่จะเขียนสคริปต์เล็กน้อยเพื่อทำให้เป็นอัตโนมัติหรือคิดทบทวนแนวทางของฉัน
ฉันไม่ได้สร้าง "เครื่องมือ" แบบเต็มรูปแบบในตอนนี้มีเพียงสคริปต์เล็ก ๆ (โดยปกติแล้วคือทุบตีหรืองูหลาม Perl จะทำงานได้เช่นกันหรือแม้กระทั่ง PHP) ที่ทำสิ่งที่ฉันทำด้วยตนเองมาก่อนโดยอัตโนมัติ โดยพื้นฐานแล้วมันเป็นการประยุกต์ใช้หลักการ DRY (หรือหลักการ Single Source Of Truth ซึ่งเป็นสาระสำคัญในสิ่งเดียวกัน) - หากคุณต้องเปลี่ยนไฟล์ต้นฉบับสองไฟล์ควบคู่กันจะต้องมีความจริงร่วมกันที่พวกเขาแบ่งปันและ ความจริงจะต้องมีการแยกตัวออกและเก็บไว้ในที่เดียว เป็นเรื่องที่ดีถ้าคุณสามารถแก้ไขปัญหานี้ได้ด้วยการปรับโครงสร้างภายใน แต่บางครั้งสิ่งนี้ไม่เป็นไปได้และนั่นคือที่สคริปต์ที่กำหนดเองเข้ามา
จากนั้นในภายหลังสคริปต์อาจหรือไม่อาจพัฒนาเป็นเครื่องมือเต็มรูปแบบ แต่ฉันมักจะเริ่มต้นด้วยสคริปต์ที่เฉพาะเจาะจงมากที่มีสิ่งต่าง ๆ มากมายที่เขียนโค้ดลงไป
ฉันเกลียดงานเสแสร้ง แต่มีความเชื่ออย่างแรงกล้าว่ามันเป็นสัญญาณของการออกแบบที่ไม่ดีหรือไม่ถูกต้อง การเป็นคนขี้เกียจเป็นคุณสมบัติที่สำคัญในโปรแกรมเมอร์และมันควรจะเป็นประเภทที่คุณต้องทำงานหนักเพื่อหลีกเลี่ยงการทำงานซ้ำ ๆ
แน่นอนว่าบางครั้งยอดเงินคงเหลือติดลบ - คุณใช้เวลาสามชั่วโมงในการสร้างรหัสใหม่หรือเขียนสคริปต์เพื่อช่วยให้คุณทำงานซ้ำได้หนึ่งชั่วโมง แต่โดยปกติแล้วความสมดุลจะเป็นบวกมากขึ้นดังนั้นหากคุณพิจารณาค่าใช้จ่ายที่ไม่ชัดเจนโดยตรง: ความล้มเหลวของมนุษย์ (มนุษย์นั้นแย่มากในการทำงานซ้ำ ๆ ), codebase ที่เล็กลง, การบำรุงรักษาที่ดีขึ้นเนื่องจากการลดความซ้ำซ้อน การพัฒนารหัสทำความสะอาด ดังนั้นแม้ว่ายอดเงินจะปรากฏเป็นลบในขณะนี้codebase จะเติบโตต่อไปและเครื่องมือที่คุณเขียนเพื่อสร้างเว็บฟอร์มสำหรับวัตถุข้อมูลสามชิ้นจะยังคงทำงานได้เมื่อคุณมีวัตถุข้อมูลสามสิบชิ้น จากประสบการณ์ของฉันความสมดุลมักถูกประเมินเพื่อสนับสนุนงานเสี้ยงฮึดฮัดเนื่องจากงานซ้ำ ๆ ง่ายกว่าการประมาณและต่ำกว่าประมาณการในขณะที่ refactoring, การทำให้เป็นอัตโนมัติและการสรุปเป็นสิ่งที่คาดการณ์ได้น้อยกว่าและอันตรายกว่า มันมักจะกลายเป็นว่าการทำงานอัตโนมัตินั้นไม่ยากเลย
และมีความเสี่ยงที่จะทำให้มันสายเกินไป: มันง่ายที่จะสร้างโครงสร้างข้อมูลใหม่สามคลาสให้เป็นรูปร่างและเขียนสคริปต์ที่สร้างเว็บฟอร์มให้พวกเขาและเมื่อคุณทำเสร็จแล้วมันง่ายที่จะเพิ่ม 27 คลาสเพิ่มเติมที่ ยังทำงานกับสคริปต์ของคุณ แต่มันใกล้จะเป็นไปไม่ได้ที่จะเขียนสคริปต์นั้นเมื่อคุณไปถึงจุดที่มีคลาสอ็อบเจ็กต์ข้อมูล 30 คลาสแต่ละคลาสมีเว็บฟอร์มที่เขียนด้วยมือและไม่มีความสอดคล้องกันระหว่างสคริปต์เหล่านั้น (หรือที่รู้จักกันว่า การบำรุงรักษา 30 คลาสของพวกเขาด้วยรูปแบบของพวกเขาคือฝันร้ายของการเข้ารหัสซ้ำและการค้นหาแบบกึ่งแทนการเปลี่ยนลักษณะทั่วไปใช้เวลาสามสิบเท่าที่ควร แต่การเขียนสคริปต์เพื่อแก้ปัญหา ซึ่งจะเป็นการพักรับประทานอาหารกลางวันโดยไม่ต้องกังวลเมื่อโครงการเริ่มต้นขึ้นในขณะนี้เป็นโครงการสองสัปดาห์ที่น่ากลัวพร้อมกับโอกาสที่น่ากลัวของผลพวงที่เกิดขึ้นเป็นเวลานานหนึ่งเดือนซึ่งประกอบด้วยการแก้ไขข้อบกพร่องให้ความรู้แก่ผู้ใช้ codebase เก่า กระแทกแดกดันการเขียนระเบียบ 30 ชั้นใช้เวลานานกว่าวิธีแก้ปัญหาที่สะอาดเพราะคุณอาจขี่สคริปต์ที่สะดวกได้ตลอดเวลา จากประสบการณ์ของฉันการทำงานซ้ำ ๆ โดยอัตโนมัติช้าเกินไปเป็นปัญหาสำคัญอย่างหนึ่งในโครงการซอฟต์แวร์ขนาดใหญ่ที่ใช้เวลานาน เพราะคุณขี่สคริปต์ที่สะดวกได้ตลอดเวลา จากประสบการณ์ของฉันการทำงานซ้ำ ๆ โดยอัตโนมัติช้าเกินไปเป็นปัญหาสำคัญอย่างหนึ่งในโครงการซอฟต์แวร์ขนาดใหญ่ที่ใช้เวลานาน เพราะคุณขี่สคริปต์ที่สะดวกได้ตลอดเวลา จากประสบการณ์ของฉันการทำงานซ้ำ ๆ โดยอัตโนมัติช้าเกินไปเป็นปัญหาสำคัญอย่างหนึ่งในโครงการซอฟต์แวร์ขนาดใหญ่ที่ใช้เวลานาน