Sorunun ilk cümlesini okursanız, bu sorunun
sihirli sayıları ortadan kaldırmak
gibi uygun kullanımlarla ilgili olmadığı, en iyi şekilde akılsız aptalca tutarlılık ile ilgili olduğu çok açıktır . Bu cevabın adresi nedir
Sağduyu size bunu söyler const char UPPER_CASE_A = 'A';
veya const char A = 'A'
sisteminize bakım ve karmaşıklıktan başka bir şey eklememektedir. const char STATUS_CODE.ARRIVED = 'A'
farklı bir durumdur.
Sabitler çalışma zamanında değiştirilemez şeyleri temsil etmelidir, ancak gelecekte derleme zamanında değiştirilmesi gerekebilir. const char A =
Doğru olandan başka ne zaman eşit olur A
?
public static final char COLON = ':'
Java kodunda görürseniz , bunu kimin yazdığını bulun ve klavyelerini bozun. Temsilciniz sizden COLON
hiç değişmezse, :
sizde bir bakım kabusu göreceksiniz.
Gizleme:
Birisi onu değiştirdiğinde ne olur, COLON = '-'
çünkü onu kullandıkları yerin -
yerine her yere ihtiyaç duyar ? assertThat(':' == COLON)
Her bir const
referans için değiştirilmediğinden emin olmak için temelde söyleyen birim testleri yazacak mısınız ? Sadece birisini değiştirdiğinde testi düzeltmesi için?
Birisi gerçekten public static final String EMPTY_STRING = "";
faydalı ve faydalı olduğunu iddia ederse , sadece onların bilgisini nitelendirir ve diğer her şeyde onları güvenle görmezden gelirsiniz.
Her yazdırılabilir karakterin adlandırılmış bir sürümle birlikte sunulması, yalnızca kim yaptıysa, denetimsiz bir şekilde kod yazmaya uygun olmadığını gösterir.
Uyum:
Aynı zamanda yapay olarak uyumu azaltır, çünkü şeyleri, onları kullanan şeylerden uzaklaştırır ve onlarla ilişkilendirir.
Bilgisayar programlamasında, uyum, bir modülün elemanlarının birbirine ait olduğu dereceyi belirtir. Böylece, uyum belirli bir modül içindeki işlevsellik parçaları arasındaki ilişkinin gücünü ölçer. Örneğin, yüksek yapışma sistemlerinde işlevsellik güçlü bir şekilde ilişkilidir.
kavrama:
Aynı zamanda birbiriyle ilgisi olmayan sınıfları bir araya getirir çünkü hepsi, yaptıkları işle gerçekten ilgisi olmayan dosyalara atıfta bulunur.
Sıkı kavrama, bir sınıf grubunun birbirine çok bağımlı olduğu bir durumdur. Bu senaryo, bir sınıf çok fazla sorumluluk üstlendiğinde veya bir kaygı kendi sınıfına sahip olmak yerine birçok sınıfa yayıldığı zaman ortaya çıkar.
Eğer bir kullandıysanız iyi bir isim gibi DELIMITER = ','
adı jenerik ve hiçbir anlamsal taşır çünkü hala aynı sorun olurdu. Değeri yeniden atamak, değişmez bir analiz yapmanıza yardımcı olmaktan başka bir şey değildir ','
. Çünkü bazı kodların kullandığı ve ihtiyaç duyduğu ,
ve bazı diğer kodların kullandığı ancak ;
şimdi ihtiyaç duyduğu şey nedir? Yine de her kullanıma manuel olarak bakmak ve bunları değiştirmek zorundasınız.
Vahşi doğada:
Geçenlerde 1,000,000+ LOC
18 yaşında bir uygulamayı yeniden ateşledim . Gibi şeyler vardı public static final COMMA = SPACE + "," + SPACE;
. Bu, sadece " , "
ihtiyaç duyulan yerin içine koymaktan daha iyi olamaz .
Okunabilirliği tartışmak istiyorsanız, IDE'nizi whitespace
onları görebileceğiniz karakterleri gösterecek şekilde yapılandırmanız gerektiğini öğrenmeniz gerekir. Bu, entropiyi bir sisteme sokmak için oldukça tembel bir nedendir.
Ayrıca ,
birden COMMA
fazla paket ve sınıfta kelimenin birden çok yanlış yazılmasıyla birden çok kez tanımlamıştı . Tüm varyasyonlara atıfta bulunarak kodda birbirine karıştırılır. Tamamen alakasız bir şeyi kırmadan bir şeyi denemek ve düzeltmek kabustan başka bir şey değildi.
Alfabe ile aynı, birden vardı UPPER_CASE_A
, A
, UPPER_A
, A_UPPER
çoğu zaman eşit olduğunu A
ancak bazı durumlarda değildi . Neredeyse her karakter için değil, tüm karakterler için.
Ve düzenleme geçmişlerinden 18 yıl boyunca bunlardan birinin hiç birinin düzenlenmediği ya da değiştirildiği görülmedi, çünkü şimdi açık olması gereken nedeni, takip edilemeyecek çok fazla şeyi kıracağı, dolayısıyla yeni bir değişkeniniz olduğu aynı nedenden asla değiştirilemeyen aynı şeye işaret eden isimler.
Aklı başında hiçbir gerçeklikte, bu uygulamanın, en yüksek entropiden başlamaktan başka bir şey yapmadığını iddia edemezsiniz.
Tüm bu karışıklığı yeniden alevlendirdim ve tüm totolojileri belirledim ve yeni üniversite işe alımlarının çok daha üretken olduklarını const
, çünkü bu referansların gerçekte neye işaret ettiklerini çok sayıda dolaylı yoldan avlamak zorunda olmadıklarını, çünkü isimlerinin ne olduğu konusunda güvenilir olmadıklarını belirttim. neleri içerdiklerine karşı.