Bu biraz tartışmalı bir konudur ve sanırım programcılar kadar çok fikir var. Ancak bunun uğruna, iş dünyasında (veya iş yerinizde) ortak uygulamaların ne olduğunu bilmek istiyorum.
İş yerimde katı bir kodlama kurallarımız var. Bunun bir bölümü sihirli dizgelere / sayılara ayrılmıştır. (C # için) belirtir:
Kodunda, sembolik sabitleri tanımlamak dışında, sayısal ya da dizgi değişmez değerleri kullanmayın. Sabitleri tanımlamak için aşağıdaki deseni kullanın:
public class Whatever { public static readonly Color PapayaWhip = new Color(0xFFEFD5); public const int MaxNumberOfWheels = 18; }
İstisnalar var: 0, 1 ve null değerleri neredeyse her zaman güvenle kullanılabilir. Çok sık 2 ve -1 değerleri de sorun yok. Kayıt veya izlemeye yönelik dizeler bu kuraldan muaftır. Değişmezlere, anlamları bağlamdan açık ve gelecekteki değişikliklere tabi olmadığında izin verilir.
mean = (a + b) / 2; // okay
WaitMilliseconds(waitTimeInSeconds * 1000); // clear enough
İdeal bir durum, aşağıdaki durumlarda kodun okunabilirliği / sürdürülebilirliği üzerindeki etkileri gösteren resmi bir araştırma belgesi olacaktır:
- Sihirli sayılar / dizgiler her yerde
- Sihirli dizgiler / sayılar sabit (ya da farklı kapsama derecelerinde) sürekli bildirimlerle değiştirilir - ve lütfen "makul" kullanımı için bana bağırma, herkesin "makul" olduğu konusunda farklı fikirleri olduğunu biliyorum
- Sihirli dizgiler / sayılar fazla miktarda ve olmak zorunda kalmayacakları yerlerde yerleştirilmişlerdir (aşağıdaki örneğe bakın)
Bunu, meslektaşlarımdan biriyle tartıştığımda, şöyle bir sabit ilan edeceğini belirten bilimsel temelli argümanlara sahip olmak istiyorum:
private const char SemiColon = ';';
private const char Space = ' ';
private const int NumberTen = 10;
Başka bir örnek olacaktır (ve bu da JavaScript’tedir):
var someNumericDisplay = new NumericDisplay("#Div_ID_Here");
DOM kimliklerini javascript dosyanızın üzerine yapıştırıyor musunuz, eğer bu kimliği sadece 1 yerde kullanılıyorsa?
Aşağıdaki konuları okudum:
StackExchange
StackOverflow
Bytes Bilişim Topluluğu
Çok daha fazla makale var ve bunları okuduktan sonra bazı desenler ortaya çıkıyor.
Öyleyse benim sorum, kodumuzda sihirli dizeleri ve sayıları kullanmak mıdır? Özellikle mümkünse referanslar tarafından desteklenen uzman cevaplarını arıyorum.
NumberTen = 10
Bu, 10 sayısı yeniden tanımlanmayacağından anlamsızdır. MaxRetryCount = 10
Bu bir noktaya sahiptir, maksimum deneme sayısını değiştirmek isteyebiliriz. private const char SemiColon = ';';
Salak. private const char LineTerminator = ';'
; Akıllı.