Convention Over Configuration คืออะไร? | เกี่ยวกับ Programming ยังไง?

Boon Worayut Aksornukul
SCB Engineer
Published in
Oct 23, 2023

What does the term ‘Convention Over Configuration’ mean ?

pexels.com/photo/computer-computer-keyboard-contemporary-display-257881/

ถ้าจะแปลกันตรงๆ เลย มันก็คืนการทำอะไรตาม “ประเพณีก่อนการกำหนดค่า”

แปลให้เป็นภาษาคนมากกว่านี้ก็คือเราจะอะไรซักอย่างตามข้อกำหนดที่ผู้สร้างกำหนดไว้ตั้งแต่แรก แทนที่จะพยายามที่จะไปปรับอะไรมันก่อน

สำหรับ Software Development นั้น Convention Over Configuration (Coc) หรือบางคนก็เรียกว่า Coding by Convention ซึ่ง concept เริ่มนำมาใช้โดยชายทีชื่อว่า David Heinemeier Hansson บางคนอาจจะคุ้นชื่อของเขา เพราะเขาคือคนเดียวกับคนที่ให้กำหนด Ruby on Rails

Convention Over Configuration เป็น concept หรือ design pattern ในการออกแบบโครงสร้างในการเขียนโปรแกรม แต่ก็ไม่ได้หมายความว่าเราจะไม่สามารถ customise อะไรได้เลย แต่หากเราต้องการ customise บางอย่างนอกเหนือจาก convention ที่กำหนดไว้ ก็ต้องเพิ่ม configuration file ขึ้นมา หลายคนอาจจะคุ้นเคยกับไฟล์ที่ชื่อ build นั้นเอง

โปรเจคที่ให้ Convention Over Configuration ตัวอย่างเช่น Maven Project (Java) หรือ การใช้ Webpack module (JavaScript)

ส่ิงที่สำคัญมากๆ สำหรับ Convention Over Configuration คือ Directory Structure เพราะมันต้องตรงกับ Convention ที่กำหนดไว้

ตัวอย่าง Directory Structure ใน Maven Project (Java)

Directory Structure in Maven Project
Directory Structure in Maven Project

แต่หากเราต้องการสร้าง custom project โดยที่ directory structure ไม่ตรงกับ convention เราสามารถเพิ่มส่วน configuration ใน pom.xml ได้ ตัวอย่างเช่น

ตัวอย่างการเพิ่มส่วน Configuration ใน pom.xml สำหรับ Custom Maven Project

ตัวอย่าง Directory Structure สำหรับ Webpack Module (JavaScript)

Conventional Directory Structure for Webpack Module
ตัวอย่าง Configuration ใน build.js สำหรับ Custom Project ใน Webpack Module (JavaScript)

ในตัวอย่างจะเป็นการสร้างไฟล์ build.js เพื่ออ้างอิง path address ของ source file และ target file โดยใช้ path module ซึ่งเป็น built-in module ของ Node.js ในการเปลี่ยนจาก relative path เป็น absolute path

--

--