ดูเหมือนว่าคุณจะแนะนำว่าความซับซ้อนของอินเทอร์เฟซนั้นวัดจากจำนวนองค์ประกอบที่มี (วิธีการในกรณีนี้) หลายคนอาจแย้งว่าต้องจำไว้ว่าcharge
วิธีการนี้สามารถใช้เพื่อคืนสมดุลของการClient
เพิ่มความซับซ้อนมากกว่าการมีองค์ประกอบพิเศษของgetBalance
วิธีการ การทำให้สิ่งต่าง ๆ ชัดเจนยิ่งขึ้นง่ายขึ้นโดยเฉพาะอย่างยิ่งจนถึงจุดที่ไม่มีความคลุมเครือไม่ว่าองค์ประกอบในอินเทอร์เฟซจะสูงขึ้นเท่าใด
นอกจากนี้การเรียกcharge(0)
ละเมิดหลักการที่น่าประหลาดใจน้อยที่สุดหรือที่รู้จักกันในชื่อWTFs ต่อนาที (จาก Clean Code, ภาพด้านล่าง) ทำให้ยากสำหรับสมาชิกใหม่ของทีม พวกเขาเข้าใจว่าการโทรนั้นใช้เพื่อให้เกิดความสมดุล คิดว่าผู้อ่านคนอื่นจะตอบสนองอย่างไร:
นอกจากนี้ลายเซ็นของcharge
วิธีการนั้นไม่สอดคล้องกับแนวทางในการแยกสิ่งเดียวและสิ่งเดียวและการแยกแบบสอบถามคำสั่งเนื่องจากทำให้วัตถุเปลี่ยนสถานะในขณะที่ส่งคืนค่าใหม่
โดยสรุปฉันเชื่อว่าอินเทอร์เฟซที่ง่ายที่สุดในกรณีนี้คือ:
public class Client {
private float bal;
float getBalance() { return bal; }
void charge(float c) { bal -= c; }
}