8
อันตรายจากการใช้เสาหินขนาดใหญ่
โครงการใหญ่ที่ฉันทำงานอยู่เมื่อสองสามปีที่ผ่านมาคือแอปพลิเคชั่นควบคุม (และทุกอย่าง) ของอุปกรณ์ขั้นสูงซึ่งเป็นหัวใจของเฟิร์มแวร์ อุปกรณ์ค่อนข้างสูงด้วยฟังก์ชั่นที่แตกต่างกว่าที่ฉันสามารถพูดได้จากหน่วยความจำและ 98% ของพวกเขาได้รับการจัดการโดยหนึ่งในปฏิบัติการขนาดใหญ่นี้ ในอีกด้านหนึ่งโปรแกรมนั้นสามารถบำรุงรักษาได้ค่อนข้างดีอยู่ภายในได้รับการจัดทำเอกสารอย่างถูกต้องมีการแยกฟังก์ชันการใช้งานที่เหมาะสมโดยไดเรกทอรีและไฟล์และอื่น ๆ แต่ท้ายที่สุดมันจะรวมกันเป็นแอปพลิเคชั่นเดียวที่ทำทุกอย่างตั้งแต่การสื่อสารฐานข้อมูลระยะไกลการจัดการหน้าจอสัมผัสการจัดการโปรโตคอลการสื่อสารที่หลากหลายการวัดขั้นตอนวิธีการควบคุมหลายอย่างการจับภาพวิดีโอเวลาพระอาทิตย์ขึ้นและวันอีสเตอร์ จำเป็นสำหรับจุดประสงค์ที่ร้ายแรงมาก!) ... โดยทั่วไปสิ่งที่เกี่ยวข้องอย่างเบาบางมากมักเกี่ยวข้องกับข้อมูลบางอย่างที่ไหลผ่านโมดูลที่ห่างไกล มันสามารถทำได้เป็นหลาย executables แยกต่างหากสื่อสารกับแต่ละอื่น ๆ พูดมากกว่าซ็อกเก็ตที่มีวัตถุประสงค์เฉพาะเจาะจงมากขึ้นอาจจะโหลด / ยกเลิกการโหลดตามความจำเป็นและอื่น ๆ ไม่มีเหตุผลที่เฉพาะเจาะจงว่าทำไมจึงทำเช่นนี้ ในมือข้างหนึ่งมันใช้งานได้และใช้งานได้ดี โครงการง่ายขึ้นโดยไม่ต้องดูแลโครงสร้างของหลายไบนารี โครงสร้างภายในก็ง่ายขึ้นเช่นกันเมื่อคุณเรียกใช้เมธอดหรืออ่านตัวแปรแทนการพูดคุยผ่านซ็อกเก็ตหรือหน่วยความจำที่แชร์ แต่ในทางกลับกันขนาดขนาดของสิ่งนี้แค่คืบคลานฉันออกไปมันให้ความรู้สึกเหมือนการขับเครื่องบินไททานิค ฉันถูกสอนให้ทำการทำให้เป็นโมดูลเสมอและการรวมทุกอย่างไว้ในไฟล์ขนาดมหึมาไฟล์เดียวรู้สึกผิด ปัญหาหนึ่งที่ฉันรู้คือความผิดพลาดอย่างหนักของโมดูลหนึ่ง (ไม่สำคัญ) ขัดข้องทั้งหมด - แต่คุณภาพของโค้ดทำให้มั่นใจได้ว่านี่จะไม่เกิดขึ้นจริงในรุ่นที่วางจำหน่าย มิฉะนั้นการแยกภายในและการตั้งโปรแกรมการป้องกันทำให้มั่นใจว่าสิ่งนี้จะยังคงทำงานได้อย่างถูกต้องส่วนใหญ่แม้ว่าครึ่งหนึ่งของโมดูลภายในจะล้มเหลวตามปกติด้วยเหตุผลบางประการ ฉันมองข้ามอันตรายอื่น ๆ ทำไมสิ่งนี้ถึงคืบคลานฉันออกไป? นี่เป็นเพียงความกลัวที่ไม่มีเหตุผลที่ไม่รู้หรือเปล่า? การทำโครงการใหญ่ขนาดใหญ่แบบนี้เป็นที่ยอมรับ อาจทำให้ความกลัวของฉันสงบลงหรือให้เหตุผลที่ดีแก่ฉันในการปรับเปลี่ยนเวอร์ชั่น 2.0 ไปเป็นไบนารีขนาดเล็กหลาย ๆ ตัว