** อนุสัญญาเกี่ยวกับการกำหนดค่า (COC) เป็นกระบวนทัศน์การออกแบบซอฟต์แวร์ที่มีจุดมุ่งหมายเพื่อให้การพัฒนาง่ายขึ้นโดยใช้สมมติฐานและมาตรฐานที่กำหนดไว้ล่วงหน้าซึ่งจะลดจำนวนการตัดสินใจของนักพัฒนา ในขณะที่ COC สามารถเพิ่มประสิทธิภาพการผลิตและความสม่ำเสมอ แต่ก็มีสถานการณ์ที่อาจล้มเหลวหรือมีประสิทธิภาพน้อยลง:
1. ขาดความยืดหยุ่น **
หนึ่งในการวิพากษ์วิจารณ์หลักของ COC คือศักยภาพที่จะจำกัดความยืดหยุ่น ในสภาพแวดล้อมที่จำเป็นต้องมีการแก้ปัญหาที่ไม่ซ้ำกันหรือไม่ได้มาตรฐานการยึดมั่นอย่างเคร่งครัดกับการประชุมสามารถ จำกัด ได้ ตัวอย่างเช่นหากโครงการต้องการสคีมาฐานข้อมูลที่ไม่ปฏิบัติตามอนุสัญญาการตั้งชื่อทั่วไปจำเป็นต้องมีการกำหนดค่าเพิ่มเติมซึ่งสามารถชดเชยประโยชน์ของ COC [5] [4]
2. ความขัดแย้งกับหลักการออกแบบอื่น ๆ **
COC บางครั้งอาจขัดแย้งกับหลักการออกแบบอื่น ๆ เช่น "ชัดเจนดีกว่าโดยปริยาย" หลักการจากเซนแห่งหลาม หลักการนี้แสดงให้เห็นว่าการกำหนดค่าที่ชัดเจนนั้นดีกว่าสมมติฐานโดยนัยซึ่งอาจนำไปสู่ความสับสนหรือพฤติกรรมที่ไม่คาดคิดหากไม่ได้บันทึกไว้อย่างดี [9] [4]
3. ความซับซ้อนในสถานการณ์ที่ไม่ได้มาตรฐาน **
เมื่อต้องรับมือกับสถานการณ์ที่ซับซ้อนหรือไม่ได้มาตรฐาน COC อาจไม่ได้ให้ความยืดหยุ่นที่จำเป็นในการจัดการกับข้อกำหนดที่ไม่ซ้ำกันอย่างมีประสิทธิภาพ ตัวอย่างเช่นในระบบที่ต้องรวมฐานข้อมูลหลายฐานข้อมูลที่มีโครงสร้างสคีมาที่แตกต่างกันการพึ่งพาการประชุมเพียงอย่างเดียวอาจนำไปสู่ความไร้ประสิทธิภาพหรือความซับซ้อนเพิ่มเติม [4] [10]
4. เส้นโค้งการเรียนรู้และการยอมรับ **
การดำเนินการ COC ต้องใช้ความคุ้นเคยในระดับหนึ่งกับการประชุมด้วยตนเอง นักพัฒนาใหม่อาจพบว่ามันท้าทายในการเรียนรู้และปรับให้เข้ากับอนุสัญญาเหล่านี้โดยเฉพาะอย่างยิ่งหากพวกเขาใช้เพื่อวิธีการกำหนดค่าที่ชัดเจนมากขึ้น สิ่งนี้สามารถเพิ่มช่วงการเรียนรู้และอาจขัดขวางการเพิ่มผลผลิตสำหรับสมาชิกในทีมใหม่ [1] [4]
5. สมมติฐานและเอกสารโดยปริยาย **
COC พึ่งพาสมมติฐานโดยปริยายอย่างมากตามอนุสัญญาที่จัดตั้งขึ้น หากสมมติฐานเหล่านี้ไม่ได้มีการบันทึกหรือเข้าใจเป็นอย่างดีอาจนำไปสู่ความเข้าใจผิดหรือข้อผิดพลาด นักพัฒนาจำเป็นต้องมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับการประชุมเพื่อใช้อย่างมีประสิทธิภาพซึ่งอาจเป็นอุปสรรคในสภาพแวดล้อมการทำงานร่วมกัน [10] [8]
6. การใช้ความเชื่อมั่นในค่าเริ่มต้น **
ในบางกรณีนักพัฒนาอาจพึ่งพาค่าเริ่มต้นที่ได้รับจาก COC โดยไม่เข้าใจสมมติฐานพื้นฐานอย่างเต็มที่ สิ่งนี้สามารถนำไปสู่พฤติกรรมที่ไม่คาดคิดหากค่าเริ่มต้นไม่สอดคล้องกับความต้องการเฉพาะของโครงการ ตัวอย่างเช่นหากเฟรมเวิร์กถือว่าโครงสร้างฐานข้อมูลบางอย่างโดยค่าเริ่มต้น แต่โครงสร้างจริงนั้นแตกต่างกันจำเป็นต้องมีการกำหนดค่าเพิ่มเติมเพื่อแทนที่ค่าเริ่มต้นเหล่านี้ [4] [11]
โดยสรุปในขณะที่การประชุมเกี่ยวกับการกำหนดค่ามีประโยชน์มากมายในแง่ของผลผลิตและความสอดคล้อง แต่ก็สามารถล้มเหลวหรือมีประสิทธิภาพน้อยลงในสถานการณ์ที่ต้องมีความยืดหยุ่นสูงการกำหนดค่าที่ซับซ้อนหรือเมื่อไม่มีความเข้าใจในการประชุมพื้นฐาน
การอ้างอิง:[1] https://facilethings.com/blog/en/convention-over-configuration
[2] https://www.reddit.com/r/rails/comments/a68d7i/im_terrified_of_convention_over_configuration/
[3] https://www.devx.com/terms/convention-over-configuration/
[4] https://en.wikipedia.org/wiki/convention_over_configuration
[5] https://www.aspireedge.com/the-impact-of-convention-over-configuration-in-ruby-on-rails.html
[6] http://softwareengineering.vazexqi.com/files/pattern.html
[7] https://learn.microsoft.com/en-us/archive/msdn-magazine/2009/febrical/patterns-in-practice-convention-over-configuration
[8] https://devopedia.org/convention-over-configuration
[9] https://softwareengineering.stackexchange.com/questions/165649/is-convention-over-configuration-not-violating-basic-programming-principles
[10] https://techblog.bozho.net/a-problem-with-convention-over-configuration/
[11] https://stackoverflow.com/questions/71985512/convention-over-configuration-in-Rails
[12] https://davewentzel.com/content/convention-over-configuration/