LedgerSMB’i yeniden düzenleyerek deneyimimizi size sunacağım. İşleri daha erken farklı bir şekilde yapmaya karar verdik ve hala tam olarak tanımladığınız şeyi yapıyoruz, ancak çok fazla tutkal yöntemi olmadan (çok az değil, çok az sayıda tutkal yöntemimiz var).
İki Kod Yazılı Yaşam
LedgerSMB yaklaşık 5 yıl boyunca iki kod tabanıyla hayatta kaldı ve eski kod temeli ortadan kaldırılmadan önce birkaç kez daha olacak. Eski kod temeli, dikkat edilmesi gereken gerçek bir korku. Kötü db tasarımı, Perl IS->some_func(\%$some_object);
, spagetti metaforunun bazen neden kullanıldığını tam olarak gösteren kodla birlikte inşa eder (modüller ile arka ve diller arasında kafiyeli veya sebepsiz anlam ifade eden uygulama yolları). Yeni kod temeli, db sorgularını saklı yordamlara taşıyarak, istek işleme için daha temiz bir çerçeveye ve daha pek çok şeye sahip olmaktan kaçınır.
Yapmaya karar verdiğimiz ilk şey, modül modülünü yeniden yansıtmaya çalışmaktı. Bu, belirli bir alandaki tüm işlevleri yeni bir modüle taşımak ve ardından eski kodu yeni modüle bağlamak anlamına gelir. Yeni API temizse, bu önemli bir şey değil. Yeni API işler kıllı olmazsa ve bu yeni API’de biraz daha çalışmak için bir davetiye.
İkincisi, yeni kodun eski kodda mantığa erişmesi gerektiğinde birçok kez bulunmasıdır. Bundan mümkün olduğunca kaçınılmalıdır, çünkü çirkin tutkallama yöntemlerine yol açmaktadır, ancak bunlardan biri her zaman kaçınamaz. Bu durumda, yapıştırma yöntemleri mümkün olan en aza indirilmeli ve kaçınılmalı, ancak gerektiğinde kullanılmalıdır.
Bu işlemi yapmak için , belirli bir alandaki tüm işlevleri yeniden yazmayı taahhüt etmeniz gerekir . Örneğin, tüm müşteri bilgileri izleme kodunu bir kerede yeniden yazabiliyorsanız, bu işlemi eski koddan çağıran kodun çalışması zor değildir ve eski kodun yeni koddan gönderilmesi en aza indirilir.
İkincisi, yerinizde makul soyutlamalar varsa, hangi API seviyesini arayacağınızı ve bunu nasıl temiz tutacağınızı seçebilmeniz gerektiğidir. Ancak, API'nizi çağıran bölümleri de biraz daha temiz olacak şekilde yeniden yazmayı düşünmelisiniz.
İndirgenemez derecede karmaşık olan birçok iş aracı alanı vardır. Tüm karmaşıklıklardan kurtulamazsınız. Ancak, özellikle yapmanız gerekenleri yapan temiz API'lere ve bu API'yi yapıcı olarak kullanan modüllere odaklanarak yönetebilirsiniz. Tutkal ancak çağıran kodun geri kalanının daha hızlı olabileceğini düşündükten sonra son çare olmalıdır.