หมายเลขที่ไม่มีชื่อทุกตัวที่ไม่ปรากฏชัดในทันทีคือหมายเลขเวทย์มนตร์ มันโง่เล็กน้อยที่จะกำหนดตัวเลขที่มีความหมายที่ชัดเจนทันทีจากบริบท
ใน django (python web framework) ฉันอาจกำหนดฟิลด์ฐานข้อมูลบางอย่างด้วยหมายเลข raw เช่น:
firstname = models.CharField(max_length=40)
middlename = models.CharField(max_length=40)
lastname = models.CharField(max_length=40)
ซึ่งชัดเจน (และวิธีปฏิบัติที่แนะนำ ) มากกว่าการพูด
MAX_LENGTH_NAME = 40
...
firstname = models.CharField(max_length=MAX_LENGTH_NAME)
middlename = models.CharField(max_length=MAX_LENGTH_NAME)
lastname = models.CharField(max_length=MAX_LENGTH_NAME)
เนื่องจากฉันไม่เคยต้องการเปลี่ยนความยาว (และสามารถเปรียบเทียบกับmax_length
ฟิลด์ได้เสมอ) หากฉันต้องการเปลี่ยนความยาวของฟิลด์หลังจากเริ่มใช้งานแอปพลิเคชันในตอนแรกฉันต้องเปลี่ยนในตำแหน่งเดียวต่อฟิลด์ในรหัส django ของฉันจากนั้นเขียนการย้ายข้อมูลเพิ่มเติมเพื่อเปลี่ยนสคีมาของ DB ถ้าฉันต้องการอ้างอิงmax_length
เขตข้อมูลที่กำหนดของวัตถุชนิดหนึ่งฉันสามารถทำได้โดยตรง - ถ้าเขตข้อมูลเหล่านั้นกำหนดPerson
คลาสฉันสามารถใช้Person._meta.get_field('firstname').max_length
เพื่อรับmax_length
กำลังใช้ (ซึ่งถูกกำหนดไว้ในที่เดียว) ความจริงที่ว่ามีการใช้ 40 อันเดียวกันสำหรับหลายสาขานั้นไม่เกี่ยวข้องเนื่องจากฉันอาจต้องการเปลี่ยนแปลงด้วยตนเอง ความยาวของชื่อไม่ควรขึ้นอยู่กับความยาวของชื่อกลางหรือนามสกุล เป็นค่าแยกต่างหากและสามารถเปลี่ยนแปลงได้อย่างอิสระ
บ่อยครั้งที่ดัชนีอาเรย์สามารถใช้ตัวเลขที่ไม่มีชื่อได้ เช่นถ้าฉันมีไฟล์ CSV ของข้อมูลที่ฉันต้องการวางในพจนานุกรมหลามด้วยองค์ประกอบแรกในแถวเป็นพจนานุกรมที่key
ฉันจะเขียน:
mydict = {}
for row in csv.reader(f):
mydict[row[0]] = row[1:]
แน่นอนฉันสามารถตั้งชื่อindex_column = 0
และทำสิ่งที่ชอบ:
index_col = 0
mydict = {}
for row in csv.reader(f):
mydict[row[index_col]] = row[:index_col] + row[index_col+1:]
หรือแย่กว่านั้นกำหนดที่after_index_col = index_col + 1
จะกำจัดindex_col+1
แต่ที่ไม่ได้ทำให้รหัสชัดเจนในมุมมองของฉัน นอกจากนี้ถ้าฉันให้index_col
ชื่อฉันควรทำให้โค้ดใช้งานได้ดีขึ้นแม้ว่าคอลัมน์จะไม่ใช่ 0 (เพราะrow[:index_col] +
ส่วนนั้น)