
เนื่องจากตามไปดูว่าทีมพัฒนาของ Android project รวมทั้ง contributor ต่าง ๆ
เขามี Coding Style หรือรูปแบบการเขียน code อย่างไรกันบ้าง ?
ซึ่งไปเจอเอกสารเรื่อง Coding Style for Contributor
จึงนำมาสรุปเรื่องที่น่าสนใจไว้นิดหน่อย
โดยเอกสารนี้ไม่ใช่ guideline หรือ คำแนะนำในการเขียน code นะ
แต่เป็นสิ่งที่นักพัฒนา และ contributor ของ Android project ต้องทำตามเสมอ
มิเช่นนั้น code เหล่านั้นจะไม่ผ่านการ approve นั่นเอง
ส่วนใหญ่เป็นไปตามกฎของภาษา Java
และเพิ่มเติมกฎต่าง ๆ เข้าไปดังนี้
1. ห้าม Ignore exception โดยเด็ดขาด
ตัวอย่างที่ห้ามทำเป็นดังนี้
สิ่งที่ควรทำคือ การจัดการ exception ต่าง ๆ
ให้ตรงกับกรณีนั้น ๆ เสมอตัวอย่างเช่น
โยน exception ออกไปให้ผู้เรียกใช้งานเสมอ
ทำการสร้าง exception ใหม่ในแต่ละกรณี ก่อนโยนออกไปให้ผู้เรียกใช้งาน
ทำการกำหนดค่าที่เหมาะสม เมื่อเกิดข้อผิดพลาดขึ้นมา
ทำการโยน RuntimeException ออกไปเลย ซึ่งอันตรายอย่างมาก ต้องใช้อย่างระมัดระวัง !!
สุดท้ายถ้ามั่นใจมาก ๆ ก็ให้ใส่ comment ไว้ เพื่ออธิบายเหตุผล
2. อย่าดักข้อผิดพลาดด้วย Generic exception โดยเด็ดขาด
สิ่งที่ควรทำคือ
- ดักจับข้อผิดพลาดใน catch แยกกันไปในแต่ละกรณี
- ทำการ refactor code เพื่อแยกการทำงานออกจากกัน
3. ต้องทำการ import library แบบเต็ม ๆ (Fully Qualify Imports)
import foo.Bar;
4. ในแต่ละ method ควรมีขนาดเล็ก ๆ
ในบางครั้ง method ที่ยาว ๆ ก็เหมาะสมเช่นกัน
แต่แนะนำว่า ถ้าในแต่ละ method มี code มากกว่า 40 บรรทัด
ควรจะแยก code ออกมาเป็นอีก method หรือ class
เพื่อทำให้ระบบงานสามารถดูแลรักษาได้ง่ายขึ้น
5. ประกาศตัวแปรเท่าที่ใช้งานเท่านั้น
ตัวอย่างเช่น
คำถามที่น่าสนใจคือ ทำไมต้องประกาศตัวแปรด้วยล่ะ ?
ถ้าแยกออกมาเป็น method และ return ค่าที่ต้องการออกมาเลย
น่าจะเหมาะสมกว่าหรือไม่ ?
6. ใช้งาน Space แทน Tab เสมอ !!
เป็นสิ่งที่นักพัฒนามักไม่พูดคุยและตกลงร่วมกัน
7. เรื่องของการตั้งชื่อ มันสำคัญมาก ๆ
- ชื่อของ field ที่ไม่ใช่ public และ ไม่ใช่ static ต้องขึ้นต้นด้วย m
- ชื่อของ field ที่เป็น static ต้องขึ้นต้นด้วย s
- ส่วน field อื่น ๆ ขึ้นต้นด้วยตัวอักษรพิมพ์เล็กเสมอ
- ค่าคงที่ต้องเป็นตัวอักษรพิมพ์ใหญ่ และแต่ละคำคั่นด้วย underscore ( _ )
8. ชื่อของ test case ควรบอกว่าทดสอบ method อะไร และ กรณีใดเสมอ
เพียงแค่ 8 ข้อ ผมคิดว่าน่าจะเพียงพอสำหรับการเริ่มต้นของทีม
เพื่อใช้เป็นข้อตกลงร่วมกันในการเขียน code
วันนี้คุยกันแล้วหรือยัง ?