Gelen bu makalede Alex Papadimoulis tarafından, bu pasajı görebilirsiniz:
private void attachSupplementalDocuments()
{
if (stateCode == "AZ" || stateCode == "TX") {
//SR008-04X/I are always required in these states
attachDocument("SR008-04X");
attachDocument("SR008-04XI");
}
if (ledgerAmnt >= 500000) {
//Ledger of 500K or more requires AUTHLDG-1A
attachDocument("AUTHLDG-1A");
}
if (coInsuredCount >= 5 && orgStatusCode != "CORP") {
//Non-CORP orgs with 5 or more co-ins require AUTHCNS-1A
attachDocument("AUTHCNS-1A");
}
}
Bu makaleyi gerçekten anlamıyorum.
Alıntı yaparım:
Her iş kuralı sabiti bir yapılandırma dosyasında saklanmış olsaydı, yaşam , yazılımı koruyan herkes için çok [daha fazla ( sic )] zor olurdu: bir, büyük dosyayı (ya da sohbeti paylaşan) bir sürü kod dosyası olurdu. bir sürü küçük yapılandırma dosyası); iş kurallarında değişikliklerin dağıtılması yeni kod gerektirmez, ancak yapılandırma dosyalarını el ile değiştirin; ve hata ayıklama çok daha zor.
Bu, bir yapılandırma dosyasında "500000" sabit tamsayıya veya "AUTHCNS-1A" ve diğer dize sabitlerine sahip olmanın bir argümanıdır.
Bu nasıl kötü bir uygulama olabilir?
Bu kod parçasında, "500000" bir sayı değildir. Örneğin, aynı değil:
int doubleMe(int a) { return a * 2;}
buradaki 2, soyutlanması gerekmeyen bir sayıdır. Kullanımı açıktır ve daha sonra tekrar kullanılabilecek bir şeyi temsil etmez.
Aksine, “500000” sadece bir sayı değildir. İşlevsellikte bir kırılma noktası fikrini temsil eden önemli bir değer. Bu numara birden fazla yerde kullanılabilir, ancak kullandığınız numara değil; sınırın / sınır çizgisinin fikri, altında hangi kural uygulanır, hangisinin üzerindedir?
Nasıl hatta bir yapılandırma dosyasından kendisine atıfta bulunarak, ya bir #define
, const
ya da dil değerini içeren daha kötüsü sağlar ne olursa olsun? Yazılım başka bir seçim yapar, böylece daha sonra programa veya başka bir programcı üzerinde, ayrıca, bu sınırda gerektiriyorsa, (çünkü vidalı konum zaman değişeceği, hiçbir şey her iki dosyalarında değişiklik olacağını size garanti). Bu hata ayıklama için açıkça daha kötü.
Ek olarak, yarın ise, hükümet "5.03.2050 tarihinden itibaren AUTHLDG-1A yerine AUTHLDG-122B eklemelisin" diye soruyorsa, bu dize sabiti basit bir dize sabiti değildir. Bir fikri temsil eden; bu, sadece bu fikrin şu anki değeridir (“defter 500k'nin üzerindeyse ekleyeceğiniz şeydir”).
Netleştireyim. Makalenin yanlış olduğunu söylemiyorum; Sadece anlamıyorum; belki de çok iyi açıklanmamıştır (en azından benim düşünceme göre).
Mümkün olan her dize değişmez veya sayısal değeri sabit, tanımlanmış veya konfigürasyon değişkeni ile değiştirmenin sadece gerekli değil, işleri karmaşık hale getirdiğini, ancak bu özel örneğin bu kategoriye girmediğini anlıyorum. Daha sonra ihtiyacınız olmayacağını nereden biliyorsunuz? Ya da bu konuda başka biri?