Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

[Android] ถ้าอยากเขียน log แนะนำ Hugo นะ

$
0
0

ใน 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 ดังนี้ [gist id="54395b470a924c8ed7b40f7fad780a8c" file="build.gradle"] จากนั้นเพิ่ม plugin เข้าไปในไฟล์ build.gradle ของ app ดังนี [gist id="54395b470a924c8ed7b40f7fad780a8c" file="app_build.gradle"] ทำการเขียน code แบบขำ ๆ สัก 1 method ดังนี้ [gist id="54395b470a924c8ed7b40f7fad780a8c" file="MainActivity.java"] ทำการ run app จะแสดง log ดังนี้ ซึ่งดูดีมีฐานะอย่างมาก [code] V/MainActivity: ⇢ sayHi(name="Somkiat") V/MainActivity: ⇠ sayHi [0ms] = "Hi Somkiat" [/code] คิดว่าน่าจะมีประโยชน์บ้างนะครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles