มีสถานการณ์ที่เป็นไปได้เมื่อตกลงที่จะใช้วิธีการ class / struct อื่นอย่างกว้างขวาง - เมื่อ class / struct ของคุณเป็นที่เก็บข้อมูล โดยปกติจะมีเพียงเล็กน้อยที่คุณสามารถทำได้กับข้อมูลนี้โดยไม่มีบริบทภายนอก
คลาสดังกล่าวยังคงสามารถใช้ตรรกะภายในได้ แต่บ่อยครั้งที่มันถูกใช้เป็นคอนเทนเนอร์:
class YourUid {
public:
YourUid(int id_in_workplace_, int id_in_living_place_, DB* FBI_database, int id_in_FBI_database);
bool IsInvalidWorker() const { return id_in_workplace == consts::invalid_id_in_workplace; }
bool CanMessWith() const { return !FBI_database_.is_cool(id_in_FBI_database_); }
int id_in_workplace;
int id_in_living_place;
private:
int id_in_FBI_database_;
const DB* FBI_database_;
};
@ jhewlett ในคำตอบของเขาอ้างถึงบทความนี้เพื่อพิสูจน์ว่าคุณไม่ควรใช้สมาชิกชั้นเรียนคนอื่น ๆ อย่างกว้างขวาง แต่มีสถานการณ์รหัสกลิ่นอื่นที่อธิบายไว้ที่นั่นพร้อมกับตัวอย่างของฉัน:
รายการพารามิเตอร์แบบยาว จำกัด จำนวนพารามิเตอร์ที่คุณต้องการในวิธีการที่กำหนดหรือใช้วัตถุเพื่อรวมพารามิเตอร์