Otomatik kod üreteçleri [kapalı]


13

Meslektaşlarımdan biri, kötü belgelenmiş ve bakımı çok zor olan büyük miktarda kod oluşturan otomatik kod üreteçlerini kullanmayı seviyor.

Bir kod üreteci kullanmanın maliyeti, oluşturma süresinin kısalması için bakımdaki zahmete değer mi?

Yanıtlar:


10

Ş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.


16
İkinci noktanıza katılmıyorum. Oluşturulan kodun çalışması ve performans / güvenlik veya başka herhangi bir sorun yaratmaması için yeterince iyi olması gerekir. Üretilen kodu asla elinizde tutmamanız gerektiğinden, normal kodlama standartlarınıza uygun olup olmadığı önemli değildir.
Hila

4
Katılmamanız iyi olur. Ancak, bir kod oluşturucu oluşturmak için zaman alacaksanız, neden kodun güzel üretilmesi için zaman ayırmıyorsunuz? Bir kez oluşturulduktan sonra, diğer tüm parçalar kadar okunabilir / bakımı yapılabilir olmadığı sürece bunu kimin yaptığını, nasıl yapıldığını veya niyetini bilmiyorum. Bazen jeneratörler tam teşekküllü bitmiş üründen ziyade sadece bir başlangıç ​​noktası oluşturmak için vardır.
vahşiler

1
Ayrıca, kodun oluşturulması derlemenizin bir parçasıysa (yani her derleme yeniden oluşturulur) "güzel" kod üretmek o kadar da mantıklı değildir. Ancak kodu bir kez oluşturacaksanız ve bu kadarsa, o zaman farklı bir hikaye.
Dean Harding

5
Hila, üretilen kodu asla elinizde tutmamalısınız, ancak gün geldiğinde, yeni / değişen gereksinimler nedeniyle bu kodu değiştirmeniz gerektiğinde, kodun temiz ve anlaşılır olması gerekir, böylece jeneratörde gerekli değişiklikleri kolayca yapabilirsiniz ve ardından yeniden oluşturun.
Carson63000

6
Oluşturulan kodun bakım için yeterli olması gerekmez, ancak hata ayıklama ve doğrulama için yeterince anlaşılır olması gerekir.
Huperniketes

23

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.


4
Sorun daha sonra, sadece bir kişi araca sahiptir, başka hiç kimse yoktur ve bu nedenle kodu elle korumak zorundadır.
Mumbles

Bu parayı geçiyor. Yazılım geliştiricileri olarak işimiz, nasıl ürettiğimiz önemli değil, koddur.
Steven Evers

12
@David, sadece bir kişi araca sahipse, onu birden fazla kişiyi içeren bir proje için kullanmamalısınız.
Matt Olenik

2
@Matt, kesinlikle. Jeneratörler projenin bir parçasıdır (komut dosyaları oluşturmak ile karşılaştırılabilir) ve sürüm kontrolünde veya benzer merkezi depoda saklanmalıdır.
Joonas Pulakka

2
@SnOrfus: Sanırım işimiz insanların kullanmaya ve almaya istekli olduğu çalışma ürünleri üretmektir. Maaşımız buradan geliyor. Kod sadece bir araç.
Joonas Pulakka

6

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.


3

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).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.