Mỗi con số không tên không rõ ràng ngay lập tức từ ngữ cảnh là một con số kỳ diệu. Thật là hơi ngớ ngẩn khi định nghĩa những con số có ý nghĩa rõ ràng ngay lập tức từ bối cảnh.
Trong django (khung web python), tôi có thể định nghĩa một số trường cơ sở dữ liệu với một số nguyên như:
firstname = models.CharField(max_length=40)
middlename = models.CharField(max_length=40)
lastname = models.CharField(max_length=40)
đó là rõ ràng hơn (và thực hành được đề nghị ) hơn nói
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)
vì tôi không bao giờ cần phải thay đổi độ dài (và luôn có thể so sánh với max_length
trường). Nếu tôi cần thay đổi độ dài của trường sau khi triển khai ứng dụng ban đầu, tôi cần thay đổi nó ở chính xác một vị trí trên mỗi trường trong mã django của mình, sau đó viết thêm một di chuyển để thay đổi lược đồ của DB. Nếu tôi cần tham chiếu max_length
đến một trường được xác định của một loại đối tượng, tôi có thể thực hiện trực tiếp - nếu các trường đó đang xác định một Person
lớp, tôi có thể sử dụng Person._meta.get_field('firstname').max_length
để có đượcmax_length
đang được sử dụng (được xác định ở một nơi). Việc 40 cùng được sử dụng cho nhiều lĩnh vực là không liên quan vì tôi có thể muốn thay đổi chúng một cách độc lập. Độ dài của tên đầu tiên không bao giờ nên phụ thuộc vào độ dài của middlename hoặc họ; chúng là những giá trị riêng biệt và có thể thay đổi độc lập.
Thông thường các chỉ số mảng có thể sử dụng các số chưa được đặt tên; giống như nếu tôi có một tệp dữ liệu CSV mà tôi muốn đặt vào một từ điển python, với phần tử đầu tiên trong hàng là từ điển key
tôi sẽ viết:
mydict = {}
for row in csv.reader(f):
mydict[row[0]] = row[1:]
Chắc chắn tôi có thể đặt tên index_column = 0
và làm một cái gì đó như:
index_col = 0
mydict = {}
for row in csv.reader(f):
mydict[row[index_col]] = row[:index_col] + row[index_col+1:]
hoặc tệ hơn là xác định after_index_col = index_col + 1
để loại bỏ index_col+1
, nhưng điều đó không làm cho mã rõ ràng hơn trong quan điểm của tôi. Ngoài ra, nếu tôi index_col
đặt tên, tốt hơn tôi nên làm cho mã hoạt động ngay cả khi cột không bằng 0 (do đó là row[:index_col] +
một phần).