Static Variable ทำพิษ
ด้วยอาชีพหลักของผมคือการพัฒนา Web Application เพื่อใช้งานภายใน Office
เครื่องมือที่ใช้งานคือ Microsoft Visual Studio 2003 ASP.NET Framework 1.1 (เก่าไปหน่อย)
ด้วยภาษา C# เมื่อ Deploy Application ให้กับ User ใช้งานไปได้สัก 2 อาทิตย์
จำนวนผู้ใช้งานเริ่มเพิ่มขึ้น และมีการใช้งานพร้อมๆ กัน มากยิ่งขึ้น
และแล้วปัญหาก็มาเกิดขึ้นจากจุดเล็กๆ ที่ส่งผลกระทบค่อนข้างมากในการใช้งานบน Web Application ถึงขั้นที่ว่าต้องทำให้ผมต้องหยุดการใช้งานระบบชั่วคราว อย่างน้อย 1 วัน
เพื่อทำการแก้ไข Coding ทั้งหมด
ตัวปัญหานั้นคือ ตัวแปรที่ประกาศเป็น static
เนื่องจากลูกน้องในทีมผมเขียนโปรแกรมโดยไม่ได้ ระวังกับเรื่องของการใช้ ตัวแปรประเภท static
ตัวแปร static นี้เหมือนกับการประกาศตัวแปร Global (เหมือนที่อยู่ใน Global.asax นั่นแหละครับ)
ซึ่งถ้ามี User ใช้งานโปรแกรมแค่คนเดียวคงไม่เป็นไร แต่เมื่อมี User ใช้งานหลายๆ คนพร้อมกัน
ค่าที่อยู่ในตัวแปร static นี้สามารถเปลี่ยนแปลงได้ตลอดเวลา จาก User คนใดก็ได้
เพราะทุคนสามารถ access ตัวแปรนี้ได้หมด ดังนั้นมีใคร เปลี่ยนแปลงค่าหรือกระทำการใดๆ กับตัวแปร static จะทำให้ User คนอื่นๆ ที่ใช้งานอยู่ได้รับผลกระทบในการเปลี่ยนแปลงค่านั้นๆ ไปด้วย
มันทำให้ Application ผม Save ข้อมูลมั่วกันไปหมด (-_-")
วันนี้เลยเสียเวลาไป 1 วันเต็มๆ เพื่อแก้ไขเรื่องนี้โดยเฉพาะ
ดังนั้นควรหลีกเลี่ยงการใช้ตัวแปร static ไปใช้ ViewState หรือ Session แทน
จะได้ไม่เดือดร้อนในภายหลังอย่างผม...
จบไปอีก 1 วัน
เครื่องมือที่ใช้งานคือ Microsoft Visual Studio 2003 ASP.NET Framework 1.1 (เก่าไปหน่อย)
ด้วยภาษา C# เมื่อ Deploy Application ให้กับ User ใช้งานไปได้สัก 2 อาทิตย์
จำนวนผู้ใช้งานเริ่มเพิ่มขึ้น และมีการใช้งานพร้อมๆ กัน มากยิ่งขึ้น
และแล้วปัญหาก็มาเกิดขึ้นจากจุดเล็กๆ ที่ส่งผลกระทบค่อนข้างมากในการใช้งานบน Web Application ถึงขั้นที่ว่าต้องทำให้ผมต้องหยุดการใช้งานระบบชั่วคราว อย่างน้อย 1 วัน
เพื่อทำการแก้ไข Coding ทั้งหมด
ตัวปัญหานั้นคือ ตัวแปรที่ประกาศเป็น static
![]() |
Static variable is wrong! |
ตัวแปร static นี้เหมือนกับการประกาศตัวแปร Global (เหมือนที่อยู่ใน Global.asax นั่นแหละครับ)
ซึ่งถ้ามี User ใช้งานโปรแกรมแค่คนเดียวคงไม่เป็นไร แต่เมื่อมี User ใช้งานหลายๆ คนพร้อมกัน
ค่าที่อยู่ในตัวแปร static นี้สามารถเปลี่ยนแปลงได้ตลอดเวลา จาก User คนใดก็ได้
เพราะทุคนสามารถ access ตัวแปรนี้ได้หมด ดังนั้นมีใคร เปลี่ยนแปลงค่าหรือกระทำการใดๆ กับตัวแปร static จะทำให้ User คนอื่นๆ ที่ใช้งานอยู่ได้รับผลกระทบในการเปลี่ยนแปลงค่านั้นๆ ไปด้วย
มันทำให้ Application ผม Save ข้อมูลมั่วกันไปหมด (-_-")
วันนี้เลยเสียเวลาไป 1 วันเต็มๆ เพื่อแก้ไขเรื่องนี้โดยเฉพาะ
ดังนั้นควรหลีกเลี่ยงการใช้ตัวแปร static ไปใช้ ViewState หรือ Session แทน
จะได้ไม่เดือดร้อนในภายหลังอย่างผม...
จบไปอีก 1 วัน
Comments
Post a Comment