ป้ายกำกับ: void type

คู่มือ TypeScript: ทำความเข้าใจและใช้งาน `void` Type อย่างถูกต้องคู่มือ TypeScript: ทำความเข้าใจและใช้งาน `void` Type อย่างถูกต้อง

TypeScript เป็นเครื่องมือที่ทรงพลังที่ช่วยให้การพัฒนา JavaScript มีความเสถียรและสามารถตรวจจับข้อผิดพลาดได้ตั้งแต่ขั้นตอนคอมไพล์ (Compile Time) ในโลกของการเขียนโปรแกรมเชิงฟังก์ชัน (Functional Programming) การทำความเข้าใจเรื่อง Type System จึงเป็นสิ่งสำคัญอย่างยิ่ง หนึ่งใน Type ที่นักพัฒนามักสับสนคือ void ซึ่งหมายถึงการไม่มีค่าส่งคืน (No Return Value) บทความนี้จะเจาะลึกถึงแก่นแท้ของ void Type และแสดงให้เห็นว่าแนวคิดนี้ถูกนำมาประยุกต์ใช้ได้อย่างไรในบริบทของการพัฒนาฐานข้อมูล PostgreSQL โดยเฉพาะอย่างยิ่งในการสร้าง Stored Procedures หรือ Functions ที่มีจุดประสงค์เพื่อ ‘การกระทำ’ (Action) มากกว่า ‘การคำนวณ’ (Calculation)

💡 void คืออะไร? ความหมายของการไม่มีค่าส่งคืน

โดยพื้นฐานแล้ว void ไม่ได้หมายถึงค่า NULL เสมอไป แต่เป็นการประกาศอย่างชัดเจนในระดับ Type System ว่า ฟังก์ชันหรือบล็อกโค้ดนั้นๆ จะดำเนินการบางอย่างให้เสร็จสิ้น (เช่น การอัปเดตข้อมูล, การบันทึก Log) แต่จะไม่ส่งคืน (return) ผลลัพธ์ใดๆ ออกมาให้ผู้เรียกใช้ทราบ

ในบริบทของ PostgreSQL เมื่อเราสร้างฟังก์ชันที่ใช้ภาษา PL/pgSQL หากฟังก์ชันนั้นมีหน้าที่เพียงแค่แก้ไขข้อมูล (Side Effect) โดยไม่จำเป็นต้องส่งค่ากลับมาให้ Query หลักใช้งาน การระบุ RETURNS void จะช่วยให้โค้ดของเรามีความแม่นยำทางตรรกะสูงขึ้น ทำให้ผู้ใช้งานทราบทันทีว่าฟังก์ชันนี้มีวัตถุประสงค์เพื่อ ‘การดำเนินการ’ ไม่ใช่ ‘การคำนวณค่า’

⚙️ กรณีศึกษา: การใช้งาน void ใน PostgreSQL Function

สมมติว่าเราต้องการสร้างฟังก์ชันที่ทำหน้าที่ตรวจสอบสถานะผู้ใช้และอัปเดตสถานะเหล่านั้นในตาราง user_status โดยฟังก์ชันนี้มีเป้าหมายเพียงแค่การเปลี่ยนแปลงข้อมูลในฐานข้อมูลเท่านั้น ไม่จำเป็นต้องส่งค่า Status กลับมาให้ผู้เรียกใช้ void จึงเป็น Type ที่เหมาะสมที่สุด

SQL

-- 1. สร้างตารางตัวอย่าง (ถ้ายังไม่มี) 
CREATE TABLE user_status (
    user_id INT PRIMARY KEY,
    status VARCHAR(50)
);

-- 2. สร้างฟังก์ชันที่ใช้ void 
CREATE OR REPLACE FUNCTION update_user_status(p_user_id INT, p_new_status VARCHAR) 
RETURNS void AS $$
BEGIN
    -- คำสั่งนี้เป็นการกระทำ (Action) ที่เปลี่ยนข้อมูล
    UPDATE user_status
    SET status = p_new_status
    WHERE user_id = p_user_id;

    -- เนื่องจากเราไม่ต้องการส่งค่าอะไรกลับมา เราจึงไม่ใช้ RETURN statement
    -- การระบุ RETURNS void จึงเพียงพอ
END;$$ LANGUAGE plpgsql;

-- 3. การเรียกใช้งานฟังก์ชัน 
SELECT update_user_status(101, 'Active');

✅ ข้อดีของการใช้ RETURNS void

  1. ความชัดเจนทางเจตนา (Intent Clarity): ผู้ที่อ่านโค้ดจะทราบทันทีว่าฟังก์ชันนี้มีหน้าที่เพียงแค่ Side Effect (การเปลี่ยนแปลงสถานะ) ไม่ได้มีผลลัพธ์ที่ต้องนำไปคำนวณต่อ
  2. ประสิทธิภาพ (Efficiency): ช่วยให้ PostgreSQL Optimizer จัดการกับฟังก์ชันที่ไม่มีผลลัพธ์ที่ต้องส่งคืนได้อย่างมีประสิทธิภาพ
  3. ความถูกต้องทาง Type System: ป้องกันการเข้าใจผิดว่าฟังก์ชันนี้ควรจะส่งค่าอะไรกลับมา ทำให้โค้ดมีความเสถียรสูง

🚀 บทสรุป

การทำความเข้าใจ void Type ไม่ได้เป็นเพียงแค่การรู้ไวยากรณ์ แต่คือการเข้าใจ ‘เจตนา’ ของโค้ด (Intent) ในฐานะ Senior Architect การใช้ RETURNS void ใน PostgreSQL Function อย่างถูกต้อง ทำให้โค้ดของเรามีความเป็นระเบียบทางตรรกะ (Logical Consistency) สูงสุด ช่วยให้การบำรุงรักษาและขยายระบบในระยะยาวเป็นไปอย่างราบรื่นและแม่นยำยิ่งขึ้น