หลีกเลี่ยงการตรวจค่า null ตอนที่ 1 (แต่ตัวอย่างที่ยกมานี้ยังไม่หลีกเลี่ยงการตรวจสอบ)

person object
person object

เคยอ่าน blog ของ Somkiat Puisungnoen
เจ้าของโดเมน somkiat.cc ซึ่งคุณตุ้ยแนะนำมา
ชื่อโพสต์ “Java :: หลีกเลี่ยงการตรวจสอบค่า Null กันได้แล้ว
โดยมี code ตอนหนึ่งว่า
1. PersonDAO personDAO = new PersonDAO();
2. Person person = personDAO.getPersonByID(1);
3. if(person != null) {
4. person.setName(“My name”);
5. }

ซึ่งแนะนำการหลีกเลี่ยงการใช้ null ไว้ 2 วิธี
http://www.somkiat.cc/java-avoid-check-null-in-your-code/

1. บรรทัดแรก
สร้าง instace ชื่อ personDAO จากคลาส PersonDAO
คำว่า DAO มาจาก Data Access Object ทำหน้าที่เข้าถึงข้อมูล
ทำให้มี instace ไว้ใช้งานด้านข้อมูล และติดต่อกับฐานข้อมูล
2. บรรทัดที่สอง
สร้าง instace ชื่อ person จากคลาส Person
ซึ่งมีค่าต่าง ๆ ตามที่กำหนด หรือการประมวลผลที่สำคัญกับข้อมูล
3. บรรทัดที่สาม
ตรวจสอบว่ามี person หรือไม่
ถ้าเรียกใช้ทั้ง ๆ ที่เป็น null ก็จะ error
4. บรรทัดที่สี่
ถ้ามีก็จะกำหนดค่าให้กับ object ใน person
ตามหลัก set กับ get

นำแนวคิดของคุณสมเกียรติ มาทำให้โปรแกรมประมวลผลได้
โดยยังไม่หลีกเลี่ยงการตรวจค่า null แต่ใช้ if != null เหมือนตัวอย่างไปก่อน
1. คลาส PersonDAO ทำหน้าที่เข้าถึงฐานข้อมูลในเบื้องต้น
การ return ต้องกำหนดค่าอะไรสักอย่าง จึงต้องกำหนดเป็น null ไว้แต่แรก
ถ้าไม่กำหนดก็จะ compile ไม่ผ่าน เช่น Person person;
public class PersonDAO {
public Person getPersonByID(int personID) {
Person person = null;
if (personID < 10 && personID > 0) {
person = new Person();
person.setID(personID);
}
return person;
}
}

2. คลาส Person ทำหน้าที่โดยตรงในการเพิ่ม ลบ แก้ไขข้อมูล
public class Person {
private int id;
private String name;
public void setName(String s) { name = s; }
public void setID(int i) { id = i; }
public int getID() { return id; }
public String getName() { return name; }
}

3. คลาส Work ทำหน้าที่รับส่งข้อมูล ควบคุม และนำเสนอข้อมูล
public class Work {
public static void main(String args[]){
PersonDAO personDAO = new PersonDAO();
Person person1 = personDAO.getPersonByID(1);
if(person1 != null) {
person1.setName(“burin”);
System.out.println(person1.getID());
System.out.println(person1.getName());
}
Person person2 = personDAO.getPersonByID(11);
if(person2 != null) {
person2.setName(“tui”);
System.out.println(person2.getID());
System.out.println(person2.getName());
}
}
}
http://www.thaiall.com/class/

ตอนที่ 2 การใช้ try catch จับ Exception
http://www.thaiall.com/blog/burin/6560/