มันขึ้นอยู่กับ. วิธีการคงที่มี 2 ประเภท:
- วิธีการที่คงที่เนื่องจากสามารถทำได้
- วิธีการที่คงที่เพราะต้องเป็น
ในฐานรหัสขนาดเล็กถึงขนาดกลางคุณสามารถใช้สองวิธีนี้แทนกันได้
หากคุณมีเมธอดที่อยู่ในประเภทแรก (สามารถเป็นแบบคงที่) และคุณจำเป็นต้องเปลี่ยนเพื่อเข้าถึงสถานะคลาสมันค่อนข้างตรงไปตรงมาเพื่อดูว่าเป็นไปได้หรือไม่ที่จะเปลี่ยนวิธีการแบบคงที่เป็นวิธีอินสแตนซ์
อย่างไรก็ตามในฐานรหัสขนาดใหญ่จำนวนไซต์การโทรที่แท้จริงอาจทำให้การค้นหาดูว่าเป็นไปได้หรือไม่ที่จะแปลงวิธีการแบบคงที่เป็นวิธีที่ไม่คงที่ซึ่งมีราคาแพงเกินไป หลายครั้งผู้คนจะเห็นจำนวนการโทรและพูดว่า "โอเค ... ฉันไม่ควรเปลี่ยนวิธีนี้ แต่ควรสร้างวิธีใหม่ที่ตอบสนองสิ่งที่ฉันต้องการ"
ที่สามารถส่งผลอย่างใดอย่างหนึ่ง:
- การทำสำเนารหัสจำนวนมาก
- การระเบิดในจำนวนอาร์กิวเมนต์ของวิธีการ
ทั้งสองสิ่งนั้นเลวร้าย
ดังนั้นคำแนะนำของฉันคือถ้าคุณมีฐานรหัสมากกว่า 200K LOC ฉันจะทำให้เมธอดคงที่ก็ต่อเมื่อเป็นวิธีที่ต้องคงที่
การปรับโครงสร้างใหม่จากไม่คงที่เป็นแบบคงที่นั้นค่อนข้างง่าย (เพียงแค่เพิ่มคีย์เวิร์ด) ดังนั้นหากคุณต้องการสร้างแบบคงที่ให้เป็นแบบคงที่จริงในภายหลัง (เมื่อคุณต้องการฟังก์ชันภายนอกอินสแตนซ์) คุณก็สามารถทำได้ อย่างไรก็ตามการเปลี่ยนโครงสร้างแบบผกผันการเปลี่ยน can-be-static ให้เป็นวิธีอินสแตนซ์นั้นมีราคาแพงกว่ามาก
ด้วยฐานรหัสขนาดใหญ่จะเป็นการดีกว่าที่จะเกิดข้อผิดพลาดในด้านความสะดวกในการขยายแทนที่จะเป็นด้านความบริสุทธิ์เชิงอุดมคติ
ดังนั้นสำหรับโปรเจ็กต์ใหญ่ ๆ อย่าทำให้สิ่งต่างๆนิ่งเว้นแต่คุณจะต้องการให้เป็น สำหรับโครงการขนาดเล็กเพียงแค่ทำในสิ่งที่คุณชอบมากที่สุด