ใน Android app ส่วนใหญ่พบว่านักพัฒนา (จริง ๆ ก็ทุกระบบนะ)
จะเขียน code สำหรับจัดเก็บ log เต็มไปหมดเลย
คำถามที่เด้งขึ้นมาทันทีเลยก็คือ

ไม่เบื่อ code เหล่านี้กันบ้างหรือไง ?
เขียนซ้ำไปซ้ำมาอยู่ได้

บ่อยครั้งพบว่า code สำหรับจัดเก็บ log การทำงาน
มีมากกว่า code ทำงานจริง ๆ อีกนะ !!

ดังนั้นสิ่งที่ควรต้องทำเลยก็คือ …
ไม่สิ ?
ดังนั้นสิ่งที่ต้องทำเลยก็คือ
เลิกเขียน log ที่ไม่จำเป็นลงไปซะ !!
ไม่ก็เขียน test มาทดสอบซะ !!

แต่ดูแล้วท่าทางจะยากกว่าเดิมไปเสียอีก
ดังนั้นขอแนะนำ Hugo ก็แล้วกัน
คิดว่าเป็นทางสายกลางที่น่าจะดีกว่าไม่ทำอะไรเลย

การใช้งาน Hugo

การใช้งานนั้นไม่ยากเลย
เพียงแค่ใส่ annotation คือว่า @DebugLog ไปที่ method ที่เราต้องการ
เมื่อมีการเรียกใช้ method นั้น ๆ
ก็จะทำการ print ค่าที่ส่งเข้ามายัง method
และค่าที่ถูก return ออกจาก method
โดยที่ไม่ต้องไปเขียน log ใด ๆ ใน code อีกต่อไป

จะทำงานเฉพาะ build type ที่เปิดการ debug เท่านั้น
หรือไม่ปิดการทำงานของ Hugo

เมื่อลองเข้าไปดูการพัฒนาของ Hugo แล้ว
พบว่าใช้ AspectJ นั่นเอง (AOP  ย่อมาจาก Aspect Oriented Programming)

ปล. แสดงว่าในแต่ละ method ต้องมีหน้าที่การทำงานชัดเจนนะ
ไม่ใช้ทำงานเยอะ ๆ ยาว ๆ
ซึ่งคิดว่าน่าจะลำบากต่อชีวิตน่าดู

มาดูตัวอย่างการใช้งานแบบง่าย ๆ กันหน่อย

เริ่มจากการเพิ่ม dependency plugin ใน build.gradle ดังนี้

จากนั้นเพิ่ม plugin เข้าไปในไฟล์ build.gradle ของ app ดังนี

ทำการเขียน code แบบขำ ๆ สัก 1 method ดังนี้

ทำการ run app จะแสดง log ดังนี้
ซึ่งดูดีมีฐานะอย่างมาก

V/MainActivity: ⇢ sayHi(name="Somkiat")
V/MainActivity: ⇠ sayHi [0ms] = "Hi Somkiat"

คิดว่าน่าจะมีประโยชน์บ้างนะครับ

Tags: