หนึ่งกฎของหัวแม่มือ: ถามตัวเองว่า "มันสมเหตุสมผลไหมที่จะเรียกวิธีนี้แม้ว่าจะยังไม่มีการสร้างวัตถุหรือยัง?" ถ้าเป็นเช่นนั้นแน่นอนควรจะคงที่
ดังนั้นในชั้นเรียนCar
คุณอาจมีวิธีการ:
double convertMpgToKpl(double mpg)
... ซึ่งคงที่เพราะอาจต้องการทราบว่า 35mpg แปลงเป็นอย่างไรแม้ว่าจะไม่มีใครสร้างCar
มา แต่วิธีนี้ (ซึ่งกำหนดประสิทธิภาพของสิ่งใดสิ่งหนึ่งCar
):
void setMileage(double mpg)
... ไม่สามารถอยู่นิ่งได้เนื่องจากไม่สามารถเรียกวิธีการก่อนที่จะCar
มีการสร้าง
(โดยวิธีการสนทนาไม่เป็นความจริงเสมอไป: บางครั้งคุณอาจมีวิธีการที่เกี่ยวข้องกับCar
วัตถุสองชิ้นและยังต้องการให้มันคงที่เช่น:
Car theMoreEfficientOf( Car c1, Car c2 )
แม้ว่าสิ่งนี้จะถูกแปลงเป็นเวอร์ชันไม่คงที่ แต่บางคนก็โต้แย้งว่าเนื่องจากไม่มีตัวเลือก "สิทธิพิเศษ" ซึ่งCar
สำคัญกว่าคุณไม่ควรบังคับให้ผู้โทรเลือกหนึ่งตัวCar
เป็นวัตถุที่คุณจะเรียก วิธีการใน สถานการณ์นี้คิดเป็นเศษส่วนเล็กน้อยของวิธีคงที่ทั้งหมด)