สมมติว่าฉันมีฟังก์ชั่นIsAdmin
ที่จะตรวจสอบว่าผู้ใช้เป็นผู้ดูแลระบบหรือไม่ สมมติว่าการตรวจสอบของผู้ดูแลระบบทำได้โดยการจับคู่ id ผู้ใช้ชื่อและรหัสผ่านกับกฎบางประเภท (ไม่สำคัญ)
ในหัวของฉันมีสองลายเซ็นฟังก์ชันที่เป็นไปได้สำหรับสิ่งนี้:
public bool IsAdmin(User user);
public bool IsAdmin(int id, string name, string password);
ฉันมักจะไปที่ลายเซ็นประเภทที่สองโดยคิดว่า:
- ฟังก์ชั่นลายเซ็นช่วยให้ผู้อ่านมีข้อมูลมากขึ้น
- ตรรกะที่มีอยู่ในฟังก์ชั่นไม่จำเป็นต้องรู้เกี่ยวกับ
User
ชั้นเรียน - มันมักจะส่งผลให้รหัสน้อยลงเล็กน้อยภายในฟังก์ชั่น
อย่างไรก็ตามบางครั้งฉันก็ตั้งคำถามกับวิธีการนี้และก็ตระหนักว่าในบางจุดมันจะกลายเป็นเรื่องไม่สะดวก หากตัวอย่างฟังก์ชั่นจะแมประหว่างเขตข้อมูลวัตถุที่แตกต่างกันสิบแห่งในบูลผลลัพธ์ผมจะส่งวัตถุทั้งหมดอย่างชัดเจน แต่นอกเหนือจากตัวอย่างที่สิ้นเชิงเช่นนั้นฉันไม่เห็นเหตุผลที่จะผ่านในวัตถุจริง
ฉันขอขอบคุณข้อโต้แย้งสำหรับสไตล์ใดสไตล์หนึ่งรวมถึงข้อสังเกตทั่วไปที่คุณอาจเสนอ
ฉันเขียนโปรแกรมทั้งในรูปแบบเชิงวัตถุและสไตล์การใช้งานดังนั้นจึงควรมองคำถามว่าเกี่ยวกับสำนวนใด ๆ และทั้งหมด