รวม 24 Tricks, Tips และ Best Practices ของ Java
10-เม.ย.-20
คัมภีร์เทพ IT
Work Organization
ใน Project ขนาดใหญ่ เราไม่ควรให้ความสำคัญแค่การสร้าง Code ใหม่ แต่ควรคิดถึงการ Maintain Code ด้วย ดังนั้นจึงเป็นสิ่งสำคัญมากที่ต้องมีการจัดระเบียบ Code ให้ดีตั้งแต่เริ่มต้น เมื่อออกแบบ Application ใหม่ โปรดอย่าลืม 3 หลักการพื้นฐานของ Clean Code:
- กฎ 10-50-500 ซึ่งคือ ในหนึ่ง Package ควรมีไม่เกิน 10 Classes, แต่ละ Method ควรมี Code ที่สั้นกว่า 50 บรรทัด และแต่ละ Class ไม่ควรมี Code เกิน 500 บรรทัด
- SOLID Design Principles
- ใช้ Design Patterns
Work with Errors
การตรวจหา Bugs อาจเป็นส่วนที่ใช้เวลานานที่สุดใน Process ของ Java Development การทำ Stack Trace จะช่วยให้คุณสามารถ Track ได้ว่าส่วนใดของ Project ที่เกิด Exception ซึ่งจะช่วยให้เราหาและวิเคราะห์ Errors ได้ง่ายขึ้น

3. NullPointer Exception
ลองดูตัวอย่างของ Code ต่อไปนี้:
4. System.currentTimeMillis vs System.nanoTime
System.currentTimeMillis() Method ทำการ Return ตัวเลขที่เป็น มิลลิวินาที ซึ่งเป็นแบบนี้มาตั้งแต่ยุคของ Unix ใน Format ของ Long ส่วนความแม่นยำของมันอยู่ในช่วงตั้งแต่ 1 ถึง 15,000 วินาที ขึ้นอยู่กับ System

System.nanoTime Method มีความแม่นยำถึง 1 x 10-9 วินาที (nanosecond) และ Return ค่าปัจจุบันของ System Timer ที่แม่นยำที่สุด

ดังนั้น System.currentTimeMillis นั้นดีสำหรับการแสดงเวลาจริง ในขณะที่ System.nanoTime นั้นดีสำหรับการใช้วัดระยะเวลา
หากคุณต้องการรับ Date Object จาก String ใน Java ให้ใช้ SimpleDateFormat Class (ซึ่งอ่านเพิ่มเติมได้ในบทความนี้) ซึ่งจะช่วยให้คุณสามารถจัดการกับความซับซ้อนทั้งหมดของการ Validation และ Conversion
6. Row Optimization
คุณควรหลีกเลี่ยงการสร้าง Java Strings โดยใช้ Class Constructor:

7. Single and Double Quotes
เมื่อใช้ Double Quotes จะเป็นการถือว่า ตัวอักขระนั้นเป็น String แต่สำหรับ Single Quotes จะทำงานแตกต่างไป นั่นคือ มันจะแปลงตัวอักขระ (‘H’ และ ‘a') ไปเป็นค่า Integer ผ่าน Extension ของ Primitive Types ซึ่งมันจะกลายเป็น 169 นั่นเอง
8. Float vs Double
ในความเป็นจริง Processors ส่วนใหญ่สามารถทำงานกับ Float และ Double ได้อย่างมีประสิทธิภาพพอ ๆ กัน ดังนั้น ลองดูคำแนะนำของ Bjorn Stroustrup:
9. Oddness Check
10. Degree Calculation
- การคูณอย่างง่าย ๆ
- ใช้ Math.pow(double base, double exponent) Function
โดยทั่วไปเราจะใช้ Library Function ก็ต่อเมื่อมีความจำเป็นจริง ๆ เท่านั้น เช่น ในกรณีที่เป็นเศษส่วนหรือเลขยกกำลังที่ติดลบ

การใช้วิธีการคูณอย่างง่าย ๆ ใน Java ทำงานได้อย่างมีประสิทธิภาพ 300-600 เท่า นอกจากนี้ยังสามารถ Optimize ได้อีกด้วย:

11. Jit Optimization
Java Code ถูกประมวลผลโดยใช้ JIT Compilation ก่อนอื่นมันจะถูกแปลเป็น Byte Code ที่ไม่ขึ้นอยู่กับ Platform ใด ๆ จากนั้นจะถูกแปลไปเป็น Machine Code ในขณะเดียวกันมันก็จะถูก Optimize ทุกสิ่งเท่าที่เป็นไปได้ และ Developers ก็สามารถช่วยให้ Compiler สร้าง Program ที่มีประสิทธิภาพสูงสุด
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการทดสอบนี้ได้ที่นี่
12. Combining Hash Tables
ในการเลือกใช้งาน ระหว่าง Array และ ArrayList ขึ้นอยู่กับลักษณะของ Java Task ที่คุณต้องการจะแก้ไข แนะนำให้จำ Features ต่อไปนี้ของ Types เหล่านี้:
- Array มีขนาดที่คงที่ และ Memory จะถูก Allocate ในตอนที่มีการประกาศ ส่วนขนาดของ ArrayLists สามารถเปลี่ยนแปลงได้
- Java Arrays จะเร็วกว่ามาก แต่ใน ArrayList จะสามารถเพิ่ม/ลบ Items ได้ง่ายกว่า
- เมื่อทำงานกับ Array มีโอกาสที่จะเกิด Error ArrayIndexOutOfBoundsException
- ArrayList มีเพียง 1 มิติ แต่ Java Arrays สามารถมีได้หลายมิติ
Json
JSON เป็น Syntax ที่มีประโยชน์และสะดวกในการใช้อย่างเหลือเชื่อสำหรับการ Store และ Share ข้อมูล โดย Java เองก็มีการรองรับการใช้งานมันอย่างเต็มที่
15. FileOutputStream vs. Filewriter
FileOutputStream ถูกออกแบบมาเพื่อเขียน Raw Byte Streams ซึ่งสิ่งนี้ทำให้เป็น Solution สำหรับการทำงานกับรูปภาพ เช่น

ในขณะที่ FileWriter จะสามารถทำงานกับ Streams ของ Characters ดังนั้น หากคุณกำลังเขียน Text Files ก็ให้เลือกใช้วิธีนี้
16. Empty Collection Instead of Null
การสร้าง Objects ถือเป็นการดำเนินการที่ต้องใช้ความพยายามและเวลามากที่สุดอย่างหนึ่งใน Java สำหรับ Best Practice ก็คือ ให้สร้างมันเมื่อจำเป็นจริง ๆ เท่านั้น

18. Deadlocks
Mutual Blocking ของ Threads สามารถเกิดขึ้นได้จากหลายสาเหตุ และมันก็เป็นการยากที่จะป้องกันเพื่อไม่ให้เกิดขึ้นใน Java 8 โดยส่วนใหญ่มักเกิดขึ้นเมื่อ Synchronized Object หนึ่งรอ Resource ที่ถูก Lock โดย Synchronized Object ตัวอื่น ๆ
สามารถหลีกเลี่ยง Deadlocks ได้ด้วยเปลี่ยนลำดับใน Threads ที่ถูกเรียก:

สรุป:
Java Applications บางตัวนั้นใช้ Resource มากซึ่งทำให้ช้า เพื่อเพิ่มประสิทธิภาพให้ดีขึ้น คุณสามารถ Allocate RAM ให้กับ Java Machine ของคุณให้มากขึ้นได้

- Xms – Minimum Pool ของ Memory Allocation
- Xmx – Maximum Memory Allocation Pool
- XX: PermSize – ขนาดเริ่มต้นที่จะถูก Allocate เมื่อเริ่มต้น JVM
- XX: MaxPermSize – ขนาดสูงสุดที่สามารถถูก Allocate ได้เมื่อเริ่มต้น JVM
Solving Common Problems
Java จะช่วยให้คุณดูชื่อของ Subdirectories และ Files ทั้งหมดใน Folder ในรูปแบบของ Array
Java อนุญาตให้คุณสามารถ Execute Console Commands ได้โดยตรงจาก Code โดยใช้ Runtime Class มันสำคัญมากที่จะต้องไม่ลืมการจัดการกับ Exception
เสียงเป็นองค์ประกอบที่สำคัญของหลาย ๆ Application อย่างเช่น ใน Game โดยภาษา Java Programming ได้จัดเตรียมวิธีที่จะทำงานกับพวกมันไว้ให้แล้ว

23. Sending Email
24. Capture Cursor Coordinates
ที่มา: https://www.techy360.com/
รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert
อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ
บทความล่าสุด