ในโครงการที่ผ่านมาผมจำเป็นต้องมีการแปลงจากไบต์กิโลไบต์ กิบิไบต์ รหัสตรงไปตรงมามากพอ:
var kBval = byteVal / 1024;
หลังจากเขียนสิ่งนั้นฉันได้ฟังก์ชั่นที่เหลือและทำงานต่อไป
แต่ต่อมาฉันเริ่มสงสัยว่าฉันเพิ่งฝังหมายเลขเวทย์มนตร์ไว้ในรหัสของฉันหรือไม่ ส่วนหนึ่งของฉันบอกว่ามันใช้ได้เพราะจำนวนนั้นเป็นค่าคงที่คงที่และควรเข้าใจได้ง่าย BYTES_PER_KBYTE
แต่ส่วนหนึ่งของฉันอีกคิดว่ามันจะได้รับสุดชัดเจนว่าในห่อคงที่ที่กำหนดไว้เช่น
ดังนั้นตัวเลขที่เป็นค่าคงที่ที่รู้จักกันดีจริง ๆ ทั้งหมดนั้นวิเศษหรือไม่?
คำถามที่เกี่ยวข้อง:
เมื่อไหร่ที่มีจำนวนเวทมนตร์? และทุกหมายเลขในรหัสถือเป็น "หมายเลขวิเศษ" หรือไม่? - คล้ายกัน แต่มีคำถามที่กว้างกว่าคำถามที่ฉันถาม คำถามของฉันมุ่งเน้นไปที่ตัวเลขคงที่ที่รู้จักกันดีซึ่งไม่ได้ระบุไว้ในคำถามเหล่านั้น
กำจัดหมายเลขเวทย์มนตร์: เมื่อไหร่เวลาที่จะพูดว่า "ไม่" มีความเกี่ยวข้องเช่นกัน แต่มุ่งเน้นไปที่การปรับโครงสร้างใหม่เมื่อเทียบกับจำนวนที่คงที่หรือไม่นั้นเป็นจำนวนเวทย์มนตร์
1024
เพราะมิฉะนั้นทีม dev ของคุณจะใช้เวลาทั้งหมดในการพิจารณาว่ามันคือ "กิโลไบต์" หรือ "kibibytes"
#define
KIBI
1024 MEBI
เป็น 1024 * 1024 …
ZERO=0, ONE=1, TWO=2
และเมื่อโปรแกรมถูกย้ายไปยังภาษาอื่น (หรือโปรแกรมเมอร์ไม่เปลี่ยนพฤติกรรมเมื่อเปลี่ยนภาษาของพวกเขา) คุณจะเห็นมันอยู่ที่นั่นด้วยและคุณต้องอธิษฐานว่าไม่มีใครเปลี่ยนเป็นONE=2
...
FOUR_HUNDRED_FOUR = 404
. ฉันทำงานในโครงการอื่นที่พวกเขามีความเข้มแข็งเกี่ยวกับการใช้สตริงคงที่แทนที่จะเป็นตัวอักษรดังนั้นพวกเขาจึงมีหลายสิบบรรทัดในรหัสที่ดูเหมือนว่าDATABASE = "database"