Bağlamdan hemen belli olmayan her isimsiz numara sihirli bir sayıdır. Bağlamdan hemen anlaşılan anlamı olan sayıları tanımlamak biraz saçma.
Django'da (python web framework), bazı veritabanı alanlarını şu gibi ham bir sayı ile tanımlayabilirim:
firstname = models.CharField(max_length=40)
middlename = models.CharField(max_length=40)
lastname = models.CharField(max_length=40)
hangisinden daha net (ve önerilen uygulama )
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)
uzunluğunu hiçbir zaman değiştirmem gerekmediği için (ve daima max_length
alanıyla karşılaştırabilirim). Uygulamayı ilk başlattıktan sonra alanın uzunluğunu değiştirmem gerekiyorsa, django kodumdaki alan başına tam olarak bir konumda değiştirmem ve sonra da DB'nin şemasını değiştirmek için bir geçiş yazmam gerekir. Herhangi max_length
bir nesne türünün tanımlanmış bir alanını referans almam gerekirse, bunu doğrudan yapabilirim - bu alanlar bir Person
sınıf tanımlıyorsa , bunu Person._meta.get_field('firstname').max_length
elde etmek için kullanabilirim .max_length
(tek bir yerde tanımlanmış olan). Aynı 40'ın çoklu alanlar için kullanılmış olması, onları bağımsız olarak değiştirmek isteyebileceğim için alakasız. Adın uzunluğu hiçbir zaman ara adın veya soyadın uzunluğuna bağlı olmamalıdır; bunlar ayrı değerlerdir ve bağımsız olarak değişebilirler.
Genellikle dizi indeksleri adsız numaralar kullanabilir; Örneğin, bir python sözlüğüne koymak istediğim bir CSV dosyam varsa, satırdaki ilk öğeyi key
yazacağım sözlük olarak :
mydict = {}
for row in csv.reader(f):
mydict[row[0]] = row[1:]
Tabii ki şöyle bir isim index_column = 0
yapabilirim:
index_col = 0
mydict = {}
for row in csv.reader(f):
mydict[row[index_col]] = row[:index_col] + row[index_col+1:]
Daha da kötüsü after_index_col = index_col + 1
kurtulmak için tanımlamak index_col+1
, ancak bu benim görüşüme göre kodu daha net yapmaz. Ayrıca, index_col
bir isim verirsem, sütun 0 olmasa bile kodun çalışmasını daha iyi yaparım (bu nedenle row[:index_col] +
bölüm).