Yanıtlar:
Şunu yeniden ifade edelim:
İyi bir otomatik kod üretecinin maliyeti buna değer mi?
Evet.
Herkes için daha fazla iş yaratan zayıf bir otomatik kod üretecinin maliyeti var ama yazar buna değer mi?
Kesinlikle hayır. Kötü kod için mazeret yoktur. Birisi akıllı olmak ve otomatik kod üretmeyi kullanmak istiyorsa, oluşturulan kodun iyi bir kod olduğundan emin olmak için zaman ayırmalıdır. Aksi takdirde, amacı nedir? Sadece paranızı rode aşağı iter ve kod üretimi söz konusu olduğunda, paranın yazdığı geliştiricide durması gerekir.
Jeneratör tarafından üretilen kod asla elle tutulmamalıdır. Değiştirilmesi gerekiyorsa, jeneratör ve / veya ayarları değiştirilmeli ve tekrar çalıştırılmalıdır. Bu göz önüne alındığında, ortaya çıkan kodun, üretim mekanizmasının kendisi kristal berraklığında olduğu sürece anlaşılmaz ve belgelenmemiş olması önemli değildir. (Kodun üretildiğini ve jeneratörün nerede olduğunu ve nasıl çalıştığını belgelediğinizden emin olun.)
Analoji: Bilgisayarımın işlemcisi her zaman makine kodunu yürütürken, bu makine kodunu üst düzey dil ve derleyici kullanarak nasıl oluşturacağımı bildiğim sürece bunun hakkında hiçbir şey bilmeme gerek yok. GCC'nin bazen subpar makine kodu ürettiğini duydum, ancak mükemmel çalıştığı sürece kimin umurunda. Veritabanı soyutlama katmanları DB motoruyla çalışmak için SQL üretir, ancak soyutlama katmanı açık ve çalışır olduğu sürece SQL'in neye benzediğini kim takar?
Doğru kullanıldığında, kod üreteçleri kesinlikle sadece oluşturma değil, aynı zamanda bakım maliyetinden de tasarruf edebilir.
Kod üreticisi bir tür derleyicidir. Derleyici çıktısının ne kadar güzel olduğu konusunda endişelenmezsiniz, sadece kaynak koduyla çalışırsınız. Bunu kullanmak ve daha sonra çıktıyı el ile değiştirmek genellikle sadece sıfırdan insanlar tarafından anlaşılabilir bir biçimde yazmaktan daha zordur ve kod üreticisini çok fazla iş yapmadan tekrar kullanamayacağınız anlamına gelir, çünkü aynı anlaşılmaz kodda aynı değişiklikler doğrudur.
Bu nedenle, oluşturma işleminin bir parçasıysa ve bu şekilde belgelendiyse iyi olabilirler. Bu durumda jeneratörün girişi kaynak kodudur ve ürettiği her şey orta derecede sonuçlardır, karıştırılmamalıdır.
Bununla birlikte, birisi kaynak olarak kullanılması gereken anlaşılmaz kod üretmek için birini kullanıyorsa, o zaman kötü kod üretir. Kişinin mekanik veya elle kötü kod üretmesi önemli değildir, yine de kötü koddur ve onunla hala bir kalite probleminiz var.
Bu nedenle, bunu köşeleri kesen ve kötü kod yazan diğer geliştiriciler olarak ele almanız gerekir. Bunu dükkanında nasıl hallettiğini bilmiyorum.
Diğer cevaplardaki yorumlardan, kod üreticilerinin kendilerinden ziyade takım standartları hakkında soru soruyorsunuz gibi görünüyor.
Kod oluşturma aracı projeye dahil edilmeli ve (uygun olduğunda) derleme sürecinin bir parçası olmalıdır. Ekibimizde bir örnek, derlemedeki veritabanı nesnelerinden sınıflar oluşturduğumuz Subsonic 2.2'yi kullanacağız.
Bunu yapan exe, ekibin yeni bir üyesinin svn'den yeni projeyi alabilmesi ve tüm bu veritabanı sınıflarının nereden geldiğini anlamaya gerek kalmadan derhal inşa edebilmesi için projenin bir parçası olarak SVN'ye kontrol edilir (bu örnekte üretilen kodu svn'ye dahil etmeyin).