ใช่มีข้อเสียคือ
รหัสที่อ่านง่ายนั้นดี แต่ควรระวังว่ารหัสนั้นสื่อสารด้วยเช่นกัน เมื่อเมธอดของวัตถุส่งคืนออบเจกต์เสมอมันจะทำการสื่อสารสองสิ่ง:
- ฉันต้องการการกำหนดค่าขั้นสูงที่ไม่จำเป็นต้องชัดเจนว่าควรจะตั้งค่าหรือกำหนดสิ่งใดตามลำดับ
- การเรียกใช้เมธอดที่ตามมาแต่ละครั้งจะสร้างขึ้นในครั้งสุดท้าย
กรณีการใช้ที่ถูกต้อง: แบบสอบถามฐานข้อมูล Ad Hoc
ไลบรารีคลาสมีอยู่ในเกือบทุกภาษาที่ช่วยให้คุณสามารถสืบค้นฐานข้อมูลโดยไม่ต้องหันไปใช้ SQL แบบตายตัว ใช้ Entity Framework สำหรับ. NET เป็นตัวอย่าง:
DBContext db = new DBContext();
List<Post> posts = db.Posts
.Where(post => post.Title.Contains("Test"))
.OrderBy(post => post.DateCreated)
.ToList();
นี่คืออินเทอร์เฟซที่คล่องแคล่วซึ่งการเรียกใช้เมธอดที่ตามมาแต่ละครั้งจะสร้างในอันก่อนหน้านี้ การอ่านการเรียกเหล่านี้อย่างมีเหตุผลมีเหตุผลในบริบทของการสืบค้นฐานข้อมูล
กรณีการใช้งานไม่ถูกต้อง: น้ำตาลในการตั้งค่าคุณสมบัติ
ตอนนี้ลองใช้รูปแบบเดียวกันกับPost
คลาส:
public class Post
{
public string Title { get; set; }
public DateTime DateCreated { get; set; }
public string Body { get; set; }
public Post SetTitle(string title)
{
Title = title;
return this;
}
public Post SetDateCreated(DateTime created)
{
DateCreated = created;
return this;
}
public Post SetBody(string body)
{
Body = body;
return this;
}
}
ตอนนี้ลองมาดูกันว่าคุณจะใช้คลาสนี้อย่างไร:
Post post = new Post()
.SetTitle("Test")
.SetDateCreated(DateTime.Now)
.SetBody("Just a test");
เมื่อฉันเห็นรหัสนี้ฉันถามคำถามนี้ทันที: "หลังจากโทรSetBody
แล้วจะทำการสืบค้นฐานข้อมูลหรือไม่ฉันต้องโทรหาวิธีอื่นเพื่อพูดว่า" ฉันเสร็จแล้วหรือยัง "
วิธีการที่ถูกล่ามโซ่โทรอะไรสื่อสารกับรหัสโดยใช้Post
ชั้นเรียน?
- ฉันมีการตั้งค่าที่ซับซ้อน
- แต่ละวิธีการเรียกสร้างบนก่อนหน้านี้
นี่คือจริงจริงหรือไม่? หมายเลขPost
ชั้นไม่ได้มีการติดตั้งที่มีความซับซ้อน การตั้งชื่อเรื่องวันที่สร้างและเนื้อหาไม่ได้สร้างต่อกันเพื่อไปสู่เป้าหมายปลายทางที่ซับซ้อนยิ่งขึ้น คุณบดหมุดสี่เหลี่ยมเป็นรูกลมแล้ว
ข้อเสียเปรียบการโยงวิธีอ้างอิงตนเองคือการที่คุณสื่อสารว่าการเรียกใช้เมธอดหลายวิธีจำเป็นต้องทำบางสิ่งและการโทรแต่ละครั้งจะสร้างขึ้นครั้งสุดท้าย หากนี่ไม่เป็นจริงวิธีการผูกมัดอาจจะสื่อสารสิ่งที่ผิดกับโปรแกรมเมอร์อื่น ๆ
เมื่อเพื่อนร่วมงานของคุณพูดว่า:
อินเทอร์เฟซที่คล่องแคล่วไม่ควรดำเนินการเพียงเพื่อความสะดวก แต่เพื่อความหมาย
พวกเขาถูกต้องอย่างแน่นอน อินเทอร์เฟซที่คล่องแคล่วหรือวิธีการผูกมัดสื่อสารสิ่งที่อยู่ในตัวของมันเองซึ่งอาจไม่เป็นจริง