เมื่อกี้พยายามแกะ xml ของ Lexitron เพื่อนำมาสร้าง HTML ให้กับโปรแกรม Dictinary.app แล้วพบตัวย่อหลายตัว อ่านแล้วงงๆ
- <Doc>
- <esearch>able-bodied</esearch>
- <eentry>able-bodied</eentry>
- <tentry>แข็งแรง</tentry>
- <ecat>ADJ</ecat>
- <esyn>healthy; fit</esyn>
- <id>76</id>
- </Doc>
พยายามแกะ แล้วได้ความว่า
| ตัวย่อ | ตัวเต็ม | คำแปร |
|---|---|---|
| esearch | english search | ตัวอักษรที่ใช้อ้างอิงตอนค้นหา |
| eentry | english entry | คำนี้ในภาษาอังกฤษ |
| tentry | thai entry | คำนี้ในภาษาไทย |
| ecat | english category | ประเภทของคำ |
| esyn | english synchronize | คำเหมือนในภาษาอังกฤษ |
| ethai | english thai | คำเหมือนในภาษาไทย |
ปัญหาคือผมไม่รู้ว่าตัวเองเดาถูกหรือเปล่า ผมเข้าใจว่าคนออกแบบน่าจะคิดถึงเรื่องการเก็บข้อมูลถ้ามีซ้ำกันมากๆ จะทำให้ขนาดของไฟล์ใหญ่ จึงย่อคำให้เล็กลง แต่ยังไม่อยากย่อให้เหลือแค่ตัวอักษรเดียวเพราะอยากให้อ่านเข้าใจด้วย แต่สวนตัวผมคิดว่าถ้าจะย่อควรจะย่อให้เหลือตัวอักษรเดียวไปเลยครับ ถ้ากลัวอ่านไม่เขาใจ ให้ใส่ comment ที่หัวของ xml แทน หรือทางที่ดีกว่านี้คือใส่ตัวเต็มแล้ว compress file เอาอาจจะใช้ gzip ซึ่งทำให้ไฟล์มีขนาดเล็กลง และถ้า gzip มันฉลาดพอ มันน่าจะรวบคำพวกนี้ให้เหลือแค่ไม่กี่ bit ให้เราด้วยเลย จากนั้นก็ยกเป็นหน้าที่ของโปรแกรมอ่าน xml ที่จะต้องแตก zip ออกมาก่อนหรือแปลงไฟล์ไฟล์เป็นรูปแบบที่ต้องการก่อนนำไปใช้จริง
อีกตัวอย่างหนึ่งในเรื่องการตั้งชื่อ field ใน table เป็นตัวย่อ เช่น appdate, cname, no เป็นต้น ผมเข้าใจว่าการย่อชื่อ field มีประโยชน์ตอนที่เราเขียน SQL จะได้เขียนสั้นๆ ยิ่งต้องเขียน SQL ยาวๆ และ มากมายใน code การย่อตัวแปลยิ่งดูมีเหตุมีผลมากขึ้น แต่ในปัจจุบันเรามี ORM เข้ามาแทนที่การเขียน SQL ดังนั้นการย่อชื่อใน table นอกจากจะไม่จำเป็นแล้ว ยั่งทำให้สับสนอีกด้วย
ขอยกตัวอย่างของ Active Record การ query ข้อมูลจาก database เช่น การค้นหา quotation ที่สร้างโดยนาย A แบบที่สร้างชื่อ field แบบย่อ
- quotations = Quotation.find_all_by_cname(A)
หรือ
- quotations = Quotation.find_all_by_creatname(A)
เทียบกับ การใช้ชื่อ field แบบเต็ม
- quotations = Quotation.find_all_by_creater_name(A)
แบบที่หลังจะอ่านรู้เรื่องมากขึ้นเรื่อยๆ ผมคิดว่าเรายอมตั้งขื่อ field ให้อ่านรู้เรื่องไปเลยดีกว่า หรืออาจถึงขนาดตั้งชื่อ field ใน table ให้เป็นคำเดียวกับที่จะเขียนใน label เลยจะดีที่สุด เวลาที่เราเขียน application เราจะให้ให้ application ของเรามาอ่านชื่อ label จาก ฐานข้อมูล ลดความซ้ำซ้อนของโปรแกรมไปได้มากทีเดียว
การย่อชื่อยังพบได้อีกหลายจุดในโปรแกรมของเรา หลายครั้งมันดูดีเพราะต้องนำไปใช้หลายที่ แต่ถ้าเป็นไปได้ให้ใช้ตัวเต็มๆ จะอ่านรู้เรื่องกว่าครับ การตัดสินใจว่าจะย่อหรือไม่น่าจะมาจากคำถามว่า เวลาคนอื่นมาอ่าน code ของเราจะเข้าใจหรือเปล่า ย่อตรงจุดนี้แล้วต้องไปเป็นการเพิ่ม code ที่อื่นหรือไม่ เช่นกรณีของ label เป็นต้น ถ้าคิดแล้วว่าไม่เข้าใจและเป็นการเพิ่ม code ก็อย่าย่อเลยครับ