14 ก.พ. 2021 เวลา 03:00 • วิทยาศาสตร์ & เทคโนโลยี
โปรแกรมนั้นมีมากพอที่จะสามารถทดสอบบางส่วนได้แล้ว! เรามาเริ่มทดสอบกันเลยดีกว่า
ในอาทิตย์นี้เราได้เพิ่มการเขียนพอสมควรมากพอที่จะสามารถเปรียบเทียบกับโปรแกรมเก่า ได้ โดยเราจะใช้เครื่องมือง่ายๆ ในภาษา C# นั่นก็คือ System.Diagnostics ซึ่งจะมี Class StopWatch เพื่อให้เราสามารถจับเวลาได้ว่าโปรแกรมของเราใช้เวลาในการประมวณผลนานแค่ไหน
อันนี้งานที่ได้ในอาทิตย์คร่าวๆ งั้นเรามาอธิบายให้ละเอียดกันดีกว่า
วันจันทร์กับวันอังคารเราก็เริ่มวางแผนว่าเราจะเขียนโปรแกรมส่วนไหน โดยในส่วนนี้เราจะมาเริ่มทำการประมวณผลส่วน Command Handler หรืออธิบายเป็นภาษาคนก็ตัวตั้วรับคำสั่งผู้ใช้งาน เพื่อส่งต่อไปให้โปรแกรมทำงานต่อได้ พร้อมกับทำการเพิ่มเติมข้อมูลผู้ใช้ที่จะเก็บและทดสอบสมการที่จะใช้ในโปรแกรม
วันพุธก็ได้ลองใช้สมการคำนวณ Level ผู้ใช้งาน โดยคำนวณจาก XP ว่า ต่อ 1 Level Xp ที่จะใช้ในการขึ้น Level ใหม่นั้นจะเป็น 100 * level บวกทลกับ Level ก่อนหน้าทั้งหมด
โอเคๆ อธิบายแบบนั้นคงจะไม่เข้าใจ เขียนแบบนี้น่าจะดีกว่า
เมื่อเราเป็น Level 1 เราจะใช้ XP 100 ในการขึ้นไปที่ Level 2
เมื่อเราเป็น Level 2 เราจะมี XP สะสมอยู่ที่ 100 และต้องใช้ XP 200 ในการขึ้นไป Level 3
เมื่อเราเป็น Level 3 เราจะมี XP สะสมอยู่ที่ 300 และต้องใช้ XP 300 ในการขึ้นไป Level 4
และก็ทำแบบนี้ต่อไปเรื่อยๆ
ซึ่งสมการที่ทำตอนแรกมันไม่ Work และขอไม่แสดงใน Blog นี้เพราะมันเละจริงๆ หลังจากนั้นเลยไประดมความคิดกับเพื่อนบน Discord เราขอเรียกว่า "คุณน้ำส้ม" ละกันเพราะเพื่อนคนนี้ใช้รูปโปรไฟล์น้ำส้มตลอด
เรากับน้ำส้มก็คิดกันประมาณหนึ่งวันจนออกมาเป็นสมการนี้
แหม~ ก็ไม่แปลกที่เราจะนั่งมึนเพราะ Quadratic Formula มันพึ่งเรียน! น่าเสียดายที่พอคิดเสร็จแล้วไม่เหลือเวลาเลยไปใช้จริงตอนวันพฤหัสกับวันศุกร์เลย
พอวันพฤหัสเราก็เริ่มเขียน Command Handler ให้สมบูรณ์ได้เลย! อย่างแรกคือเรื่อง Prefix ถ้าจะให้อธิบายเหรอ... สมมิติ Chat Bot Line เวลาเราคุยกับบอท เราไม่ต้องมี Prefix เราเขียนไปได้เลยว่า "เช็คข้อมูงทางการเงิน" เพราะเป็นการแชตแบบ 1-1บอทก็จะตอบกลับมาได้โดยไม่มีปัญหา แต่เราจะทำแบบนั้นในบอท Discord ไม่ได้เนื่องจากมันเป็นแชตกลุ่มที่จะคุยเรื่องอะไรก็ได้ จึงต้องมี Prefix หรือตัวนำหน้าคำสั่งเพื่อให้บอทสามารถแยกการแชตปกติกับคำสั่งได้
คราวนี้ปัญหาอยู่ที่ว่า Server หนึ่งใน Discord นั้นมีบอทหลายตัว และก็มีโอกาสที่ Prefix จะซ้ำกัน เราจึงต้องสร้าง Command ใหม่เพื่อให้สามารถเปลี่ยน Prefix อิงตาม Server ได้ แต่เราไม่มี Data สำหรับ Server!!! เราเลยต้องเขียน Class สำหรับ Server Data ขึ้นมาใหม่ก่อนโดยเราจะเก็บข้อมูลพื้นฐาน 2 ิย่างคือ ID กับ Prefix โดยเรากำหนดไว้ว่า Prefix Default จะเป็น "."
หลังจากนั้นเราก็สามารถเขียนที่ Command Handler ให้แยกคำสั่งกับการแชตปกติได้!
ในวันศุกร์เราก็ทำระบบ Level โดยที่ให้เพิ่ม XP ผู้ใช่เมื่อแชต เท่ากับว่าหากเป็นคำสั่งจะไม่เพิ่ม XP ให้ และใช้สมการด้านบนเป็นตัววัด Level นั่นเอง
เมื่อทำเสร็จแล้วก็เริ่มวัดประสิทธิภาพของ Command เช็ค Balance กับ Level เปรียบเทียบกับ Code เก่า ซึ่งผลที่ได้คือ 300-400ms ซึ่งเท่ากับโปรแกรมเก่า!
ในส่วนของตัว Command โค้ดจะไม่ได้สั้นลงแต่ส่วนอื่นเช่น Data กับ Command Handler นั้นสั้นลงอย่างเห็นได้ชัด และโค้ดอ่านง่ายขึ้นในทั้งสองที่
ถือว่าประสบความสำเร็จ!
โฆษณา