Hard Code ด้วย String Literal ไม่ปลอดภัยแน่ๆ

เมื่อการเขียนโปรแกรมที่เริ่มมีระบบที่ซับซ้อนมากขึ้น คนเขียนโปรแกรมต้องจัดการ code ให้เป็นระบบมากขึ้น เพื่อให้คนอื่นอ่านได้ง่าย แก้ได้ง่าย หากเราสนใจแต่ว่าโปรแกรมต้องทำงานได้ถูกต้อง โดยไม่สนใจว่าคนอื่นเขาทำกันยังไง เขียนโปรแกรมมีลักษณะแบบไหน ตั้งชื่อแนวไหน ยิ่งถ้าต้องทำงานเป็นทีมเป็นกลุ่ม ก็ต้องมีวินัยในตัวเองสูงด้วย

คราวนี้ผมจะเขียนบล็อกสั้นๆ เป็นการแนะนำการเขียนโปรแกรมให้ดูดี และง่ายต่อการอ่าน/แก้ไขด้วย

"Hard Code" โปรแกรมเมอร์มักจะรู้จักคำนี้เป็นอย่างดี มันคือ อาการที่โปรแกรมเมอร์จะเขียนโปรแกรมให้ทำอะไรสักอย่างแบบตรงไปตรงมาสุดๆ แต่ผมไม่ได้หมายความว่าโปรแกรมเมอร์ต้องทำอะไรแบบอ้อมๆนะครับ Hard Code ที่ผมจะพูดถึงในที่นี้จะเกี่ยวกับเรื่องของ String Literal ที่โปรแกรมเมอร์อาจกำหนดลงไปตรงๆใน code อาจเป็น ที่อยู่ของหน้าเว็บ ค่าที่ตรงกับในฐานข้อมูล หรืออื่นๆ ซึ่งจากเรื่องของ String Literal Pool ที่ผมได้เขียนไว้ใน Java Pass by Reference , Pass by Value และรู้จักกับ Literal Pool ถึงแม้ว่า String ชุดเดียวกัน จะถูกเก็บใน reference เดียวกัน แต่ลองนึกถึงตอนแก้สิครับ เกิดเราต้องทำโปรแกรมให้ผู้ใช้ตัวนึง แล้วเขาอยากเปลี่ยนสิ่งที่เรา Hard Code ไว้เป็นคำอื่น หากันไม่สนุกเท่าไรครับ

สำหรับวิธีการที่ถูกต้องนั้น เราต้องประกาศเป็นตัวแปรแทนที่ String เหล่านั้นครับ โดยทำให้เป็น Constant ครับ สำหรับ Constant ก็คือ ตัวแปรที่เป็น attribute ของ class ดังนี้ครับ
public static final String PATH_TO_INDEX = "index.html";
สำหรับ modifier, datatype และชื่อต่างๆ ก็ปรับให้เหมาะสมสำหรับโปรแกรมนะครับ สิ่งสำคัญถ้าจะเป็น Constant ก็ต้องมี static final แปะอยู่ด้วย หากต้องการศึกษา keyword เหล่านี้เพิ่มเติมรบกวนหาข้อมูลเพิ่มเติมได้ที่นี่ครับ > keyword และสิทธิ์การเข้าถึงตัวแปร/method ภาษา Java เพียงเท่านี้ ถ้ามีการแก้ก็แก้แค่จุดเดียวก็เพียงพอแล้วครับ ^^

Facebook Comment

Recent Posts

Popular post of 7 days

[Java] รู้จัก OR-Mapping และ Hibernate เบื้องต้น

Portal คืออะไรกันนะ???

Android Auto & Apple Carplay คืออะไร ใช้งานยังไง

Popular

Portal คืออะไรกันนะ???

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

เรื่องของ ++i กับ i++

[Java] Java Static Variable และ Static Method

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)

ความเร็วเน็ตที่แท้จริง Mbps MBps ???