สมมติว่าฉันมีวัตถุที่กำหนดเองนักเรียน :
public class Student{
public int _id;
public String name;
public int age;
public float score;
}
และคลาส, หน้าต่างที่ใช้เพื่อแสดงข้อมูลของนักเรียน :
public class Window{
public void showInfo(Student student);
}
มันดูค่อนข้างปกติ แต่ฉันพบว่าWindowนั้นไม่ง่ายที่จะทำการทดสอบเป็นรายบุคคลเพราะมันต้องการออบเจ็กต์Studentจริงเพื่อเรียกใช้ฟังก์ชัน ดังนั้นฉันจึงพยายามปรับเปลี่ยน showInfo เพื่อที่จะไม่ยอมรับวัตถุนักเรียนโดยตรง:
public void showInfo(int _id, String name, int age, float score);
เพื่อให้ง่ายต่อการทดสอบหน้าต่างแยกต่างหาก:
showInfo(123, "abc", 45, 6.7);
แต่ฉันพบว่าเวอร์ชันที่แก้ไขมีปัญหาอื่น:
Modify Student (เช่น: เพิ่มคุณสมบัติใหม่) จำเป็นต้องแก้ไข method-Signature ของ showInfo
ถ้านักเรียนมีคุณสมบัติมากมายลายเซ็นวิธีการของนักเรียนจะยาวมาก
ดังนั้นการใช้ออบเจกต์ที่กำหนดเองเป็นพารามิเตอร์หรือยอมรับคุณสมบัติแต่ละอย่างในออบเจ็กต์เป็นพารามิเตอร์สิ่งที่รักษาได้มากกว่ากัน?
int
พารามิเตอร์ จากไซต์การโทรไม่มีการยืนยันว่าคุณผ่านพวกเขาจริง ๆ ในลำดับที่ถูกต้อง เกิดอะไรขึ้นถ้าคุณสลับid
และage
หรือfirstName
และlastName
? คุณกำลังแนะนำจุดที่มีศักยภาพของความล้มเหลวที่อาจจะยากมากที่จะตรวจสอบจนกว่าจะพัดขึ้นในหน้าของคุณและคุณกำลังเพิ่มได้ที่เว็บไซต์โทรทุก
showForm(bool, bool, bool, bool, int)
วิธี - ฉันรักที่ ...
showInfo
จำเป็นต้องใช้สตริงจริง, โฟลทจริงและสอง ints จริง การให้String
วัตถุจริงดีกว่าการจัดหาStudent
วัตถุจริงอย่างไร