android-coding-style
เนื่องจากตามไปดูว่าทีมพัฒนาของ 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
วันนี้คุยกันแล้วหรือยัง ?

Tags: