Bir öğleden sonra .NET VB6 üzerinde faydalarını extol… ne diyebilirim? [kapalı]


9

Şirketim yirmi kişilik küçük bir mühendislik firması. Burada tüm uygulama programlama son 25+ yıldır burada çalışırken kendimi VB6 bir montaj arka plandan öğretti iki kişi tarafından VB6 yapılır.

Sonuç olarak, VB6 kodu, tek bir nesne yerine yüzlerce genel küresel değişken (bazıları argümanların ve geri dönen değerlerin üzerinden tercih edilmeleri tercih edilir) gibi tonlarca yazılan değişkenler gibi korkunç kod kokularıyla doludur. sınıf. Yeniden düzenleme neredeyse imkansızdır ve herhangi bir değişiklik kod aracılığıyla çok fazla kazma gerektirir ve bir kez yapıldığında her zaman daha fazla delik açıyor gibi görünür.

Patronum VB6'nın ölü bir teknoloji olduğunu fark ediyor ve yeni geliştirme için .NET'e geçmekten memnuniyet duymaya istekli. .NET'e ilerliyoruz, ancak daha iyi kod yazmanın bir yolu olarak değil, yeni Windows işletim sistemleriyle uyumluluğu sürdürmenin bir yolu olarak görüyor.

Sadece güncel olmanın ötesinde VB6 üzerinden .NET dilinin faydalarını en iyi nasıl açıklayabilirim? .NET'e geçişin iyi bir hareket olduğunu ancak mevcut programlama paradigmamızın da değişmeye başlaması gerektiği anlamına en iyi vurgulamak için ne diyebilirim ? Patronum Visual Basic .NET'in VB6'ya benzediğini duyunca, ilk içgüdüsünün eski kod karmaşasını .NET'e dönüştürmek olacağını biliyorum.

Tek bir öğleden sonra kimsenin zihniyetini değiştirmenin imkansız olacağını anlıyorum, ancak en azından meclis-to-boss'umu güçlü tip değişkenler, özel sınıflar ve özel alanlar gibi şeylerin toplam zaman kaybı olmadığı konusunda nasıl ikna edebilirim? ve enerji?


4
VB6 geliştiricileri ölmekte olan bir cins midir? .NET geliştiricileri ve VB6 geliştiricileri almayı deneyin. Her biri için kaç CV aldığınıza bakın. İki eski zamanlayıcının emekli olmasıyla, hiçbir yedek olmayacak (ya da daha doğrusu çok pahalı bir yedek) olmayacak bir argüman yeterli olmalıdır.
Oded

3
Bunu deneyebileceğini takdir ediyorum , ancak kendine saygılı çoğu geliştirici ölü bir dilden uzak kalacaktı. MS'in VB6'yı desteklemeyi ne zaman durduracağından emin değilim, ancak kaynakları bulmak giderek zorlaşıyor (ve ürün ömrü VB6'ya karşı başka bir argüman). Bunun ne kadar yardımcı olacağından emin değilim, ancak çalışın : msdn.microsoft.com/en-us/vstudio/ms788708.aspx - 2008 IDE'nin ömrünün sonu oldu. Ve "Özel Destek Anlaşmaları Microsoft'tan edinilebilir" gibi - ne pahasına olursa olsun, merak ediyorum ...
Oded

1
@Oded Ne yazık ki, bu argümanların hiçbiri VB.NET'in VB6, küresel genel değişkenler ve hepsi için bir stand-in olarak kullanılabilir olduğu gerçeğine gerçekten değinmiyor. .NET kullandığımızda, tüm avantajlarını nasıl kullanıyoruz ?
dlras2

1
Belki örneklerle açıklayınız. VB6'da çözülmesi zor olan ve VB .NET'te çözülmesi çok daha kolay olan bir sorun var mı? Kod tabanınızdan bazı örnekler alabilir ve bunların .NET'te VB6'daki özelliklerle mümkün olmayan daha iyi bir koda nasıl temizlenebileceğini gösterebilir misiniz?
SinirliWithFormsDesigner

1
@DanRasmussen VB.NET, VB6 projelerini doğru bir şekilde alamadı (henüz düzeltildi mi?). Yükseltmek önemsiz değildir.

Yanıtlar:


16

Kısa Cevap: Fikrini, teknikte yer alan soruda listelediğiniz kriterlere göre değiştirmek için yapabileceğiniz hiçbir şey yoktur . Bu dini bir tartışmaya denktir . Başarısızlığa giden en hızlı yol, seyirci açısından, bu durumda işletme sahiplerinin bakış açısından olmayan bir argüman sunmaktır .

Daha Uzun Cevap: İşteki değişim sadece bir şeyden kaynaklanıyor. Sonuç olarak kâr edin.

... en azından mecbur edici patronumu, güçlü bir şekilde yazılmış değişkenler, özel sınıflar ve özel alanlar gibi şeylerin toplam zaman ve enerji kaybı olmadığı konusunda nasıl ikna edebilirim?

Onlar sadece zaman ve enerji kaybı olmakla kalmaz, daha da önemlisi paraya mal olurlar ! Önerilerinizin zaman içinde önemli bir kar sağlayacağını nicel olarak gösterebilmelisiniz . Sadece iddia temiz kod olan "daha iyi" , çünkü yeterli değildir temiz kod üretmek için daha yol masrafı.

Modern teknolojiyi kullanarak maliyeti götürecek nasıl ifade edebilen varsa etmek ($COST + X) * TIME = $PROFIT, nerede Xbir Önemsiz olmayan pozitif sayı ve TIMEkısa, çarpıcı bir senaryo olabilir nispeten olduğunu.

YG'yi hesaplamanın başka bir yolu (Yatırım Getirisi)

YG Formülü

Bu YG / ROR , özellikle uzun bir süre boyunca önemsiz bir sayı ise, bir iş vakanız da yoktur.

Şirketiniz gerçekten nasıl para kazanıyor?

kaç satır kod? kaç müşteri? Bu yazılım yılda ne kadar gelir üretiyor? gelir çoğunlukla sözleşmeleri destekliyor mu? veya yeni lisanslar? hedef pazar istikrarlı mı? genişleyen? müteahhitlik? yazılım çok daha karlı bir ürün için bir kayıp lideri mi?

İyi bir iş adamı için masaya yatırılan parayı görmezden gelmek zordur.

Tabii ki ifadelerinizi zor gerçeklerle yedeklemelisiniz. Bu, yalnızca akademik teknik ayrıntıları değil, gerçek işi gerçekten anladığınızı gösteren gerçek sayılar sunmanız gerektiği anlamına gelir.

Sadece Profesyoneller Değil

Ayrıca ayrıntılı bir risk analizi ve bu risklerin ne $COSTolsaydı ne olacağını , gerçekçi bir vakanız olduğuna ikna etmek ve artık sadece VB6 yapmak istemediğinize sızlanmakla yetinmeyecekti.

Eski köpeklere yeni numaralar öğretmek

... Yalnızca mevcut programlama paradigmamız da değişmeye başlarsa .NET'e geçişin iyi bir hareket olduğunu en iyi vurgulamak için ne diyebilirim? ...

Programlama paradigmasının değiştirilmesi ya da değiştirilmemesi Yeni teknolojinin mümkün olduğunca deyimsel olması, risk analizinin bir parçasıdır. Ancak bu, ilk etapta bir değişiklik yaparak kazanılacak önemli para olduğunu kanıtladıktan sonra ayrı bir tartışmadır .

İş adamları, tıpkı teknik insanlar teknik vakaları dinleme eğiliminde olduğu gibi iş vakalarını dinleme eğilimindedir. Sorunuzdaki tüm vakalar, sizin durumunuzda en iyi akademik olan teknik değerleri savunuyor.

tahmin

Burada birkaç varsayım yapıyorum VB6 uygulaması, küçük dükkan, birkaç geliştirici, 2 büyük geliştirici / işletme sahibi muhtemelen olgun bir niş pazar uygulaması işaret ediyor (hatalar ve etrafı biliniyor), oldukça eksiksiz ve nispeten istikrarlı, ne olursa olsun özellik arasında "karmaşa" kod temelidir. Bu da küçük kullanıcı tabanının yıldan yıla önemli ölçüde artmadığına inanmamı sağlıyor ve bu da beni aşağıdaki sonuca götürüyor.

Gerçekten bu uygulama ile teknik yönünü değiştirmek için herhangi bir gerçek zorlayıcı iş nedeni olmayacak olduğunu. Ve VB.Net'e geçmek de zaman kaybıdır, çünkü sadece karışıklığa sahip olacaksınız, ancak şimdi daha fazla ve geliştirme ekibinin 2 / 3'ü yeni bir şey öğrenmeye adanmamış. İyi şanslar.


2
maalesef yeniden yazma maliyeti (artı eğitim, artı uzmanlık kazanma) genellikle uygulamayı en azından kısa ve orta vadede çalıştırma maliyetinden daha ağır basar. Ancak uzun vadede, yeniden yazımınızın kendisinin $ next_new_technology içinde yeniden yazılması gerekebileceği riskini taşıyorsunuz.
gbjbaanb

4
+1 dini tartışma. OP .NET'te çalışmak istiyorsa, bir .NET mağazasında bir iş bulmalıdır; Bu şirkette VB6'dan .NET'e geçmenin şüpheli faydası olan büyük bir risk olduğunu söyleyebilirim.
Kirk Broadhurst

"Yeniden düzenleme neredeyse imkansızdır ve herhangi bir değişiklik kod yoluyla çok fazla kazmayı gerektirir ve bir kez yapıldığında, her zaman daha fazla delik açıyor gibi görünüyor." Bu, iş için değerli olan son ifadedir. İş parasını önemli ölçüde maliyetlendirmeden kod tabanını değiştiremediklerini göstermek, cevabınıza uygun çok geçerli bir argüman. Elbette, bu ifadeyi desteklemek için metriklerin orada olması gerekir.

@ GlenH7 Şahsen teklif ettiğiniz şeyin dramatik kişisel görüş ve retorik olduğunu düşünüyorum, çünkü OP kişisel görüşlerini ve gündemini zorlamaktan başka bir şey için endişe duymuyor. Cevabım, değişim için gerçek itici gücün ne olacağını düşünmediklerini ve düşündükleri veya düşündükleri şey olmadığını önermek. Demek istediğim, uzun vadede "pahalı" olan artımlı değişikliklerin her zaman aynı miktarda teklif ettiklerinden daha ucuz olacağıdır. Söylediklerini ve söylediklerinizi tartışılmaz bir iş argümanı haline getirmek.

Açıklamada bir dereceye kadar retorik olduğunu kabul etti. Bazı dükkanlar (ve hayır, genellikle küçük olanlar değil) hataları / kaçışları izler, böylece hatalar hakkında sert metrikler oluşturmak mümkündür. OTOH, çoğu dükkan bu bilgileri tutmaz ve bir iş sunumunda fazla sayılmayan bir "bağırsak hissinden" başka bir şey değildir.

11

Amiral gemisi ürünü VB6 ile yazılmış ve 3 kişi tarafından korunan bir müşterim var. Onlara yardım etmeye geldim çünkü bir web servisini aramalarını isteyen bir ortakları vardı. Bu VB6'dan yapmak çok zor, ama VB.NET veya C #'dan kolay ve onlara VB6'ya COM bileşeni gibi görünen bir .NET derlemesi yazdım, böylece onu arayabilirler. Sonra birine web hizmeti sunmaları gerekiyordu. Sonra biraz bağımsız bir yardımcı program yazmak istediler ve bazı bilgileri şifrelemek ve şifresini çözmek ve XML'yi ayrıştırmak gerekiyordu. Onlara .NET'te yazmayı öğrettim. Son 5 yıl içinde, amiral gemisi ürünü hiç küçülmemiş olsa da, kodları gittikçe daha fazla .NET'te. Nefret ettikleri bölümleri var - her uygulama onlara sahiptir - ve bu parçaları nereye çekebilecekleri (şimdi küçülme başlıyor) ve bunları hizmetlere veya ayrı yardımcı programlara koyuyorlar. Geri kalanı holus-bolus'u .NET'e dönüştürülecek. Evet, kötü değişken isimleri ve hepsi - bence mevcut programlama paradigmalarını değiştirmeseler bile .NET'e geçmenin birçok faydası var. Bunlar:

  • en iyi Visual Studio'yu daha iyi arama, daha iyi Intellisense, daha hızlı derlemeler vb.
  • iyi bir kaynak kontrol sistemi ile entegre edebilirsiniz (yani VSS ile değil)
  • .NET ile birlikte gelen ve şifreleme, XML ayrıştırma, görüntü işleme ve daha fazlası gibi şeyleri kısa sürede çalıştıran kütüphaneler vardır
  • uluslararasılaştırma ve yerelleştirme bir .NET projesinde çok daha kolaydır (bu, hem Fransızca hem de İngilizce sürümlere ihtiyaç duyan büyük bir Kanadalı müşteriden gelen bir sorgu ile, müşterim için dengeyi değiştirmiş olabilir)
  • ucuz kontrol kütüphaneleri (Telerik, Infragistics, ComponentOne vb.) size neredeyse ücretsiz olarak inanılmaz özellikler sunar
  • VB6'yı öğretmek için harcanan zamanın buna değmediği durumlarda, bir yaz öğrencisi gibi geçici yardım bulmak çok daha kolay olacaktır (yeni bir tam zamanlı işe kiralamayı öğretme konusunda nasıl hissettiğinizi tartışmayın)
  • uygulamanız UAC farkında olacaktır, bu yüzden Vista, 7 ve 8'de daha iyi çalışacaktır. XP uyumluluk modunda çalıştırılması gerekmez

Dahası var, ama elbette bu yeterli mi?

Programlama paradigmaları, güçlü yazım, derleyici arkadaşınız, kapsülleme sizin arkadaşınızdır ve bu yüzden aklımda (ve bu görüşlere sahip olmak için para alıyorum) tamamen ayrı. O tepede ölmek istiyorsanız, devam edin, ancak açık bir VB6 kopyasıyla öleceksiniz.


Kapanış paragrafınızla ne demek istiyorsun?
dlras2

6
Bu ".NET'e geçmek" ve "hepimiz farklı bir şekilde programlayalım" farklıdır ve ikincisiyle savaşmayı seçerseniz, sadece başarılı olma olasılığınız değil, neredeyse kesinlikle onları hareket ettirmeyeceksiniz. NET bu yaklaşım ile. Yani farklı bir şekilde programlamaları gerektiğine katılıyorum. Ama .NET'in en iyi yolu şu anki gibi, ama çikolata sosu ve sprinkle!
Kate Gregory

Onlara farklı problemler olarak yaklaşmanın faydasını anlıyorum, ancak sorun, onlara ayrı problemler olarak yaklaşmanın sadece .NET'te eşit derecede sürdürülemez programlar sağlaması.
dlras2

1
Artık daha farklı uygulamaların yapılabileceğini ve değişen ağrının değdiğini düşünen geliştiricilerle birlikte daha iyi uygulamalara (daha güzel kontroller, daha fazla işlevsellik) ve daha iyi bir sürece (kaynak kontrolünde gizlice ve hatta iş öğesi takibine) sahip olacaksınız. çünkü bu büyük faydalar. Onlardan sorduğunuz bir sonraki şeye çok daha açık olacaklar. Ve "sürdürülemez" ikili değildir. Kod harika olmayacak, ancak durum hala olduğundan daha iyi olacak. Siz de güvenilirliğini kanıtlamış olacaksınız.
Kate Gregory

8

Birkaç yıl önce bir VB6 projesi ile başladım (şirketin özel ERP sistemi) ve yavaş yavaş .NET'e geçiyorum. Yarı işlenmiş bir yerde.

Her şeyden önce, VB6'dan VB.Net'e dönüştürmek neredeyse her zaman kötü bir fikirdir (ve bu konuda çok fazla araştırma yaptım). Çok fazla farklı var. Ayrıca, patronunuz VB.Net'in "tıpkı VB6 gibi" olduğunu düşünüyorsa, o zaman tamamen yanlıştır ve bakış açısını hızlı bir şekilde değiştirmeniz gerekir.

Stratejim, iki kod tabanını ayrı tutmak ve ayrı tutmak ve sonra tüm modülleri yavaş yavaş VB6'dan .NET'e taşımaktı, ancak yalnızca bu modülde önemli bir değişiklik olduğunda, maliyetin bir kısmını amorti edebiliriz. Yine de, yeniden yazma büyük pahalı ve riskli bir iştir.

Mevcut VB6'yı yeni .NET koduyla entegre etmenin iki yolu vardır (ve muhtemelen bunu çok uzun bir süre yapacaksınız, bu yüzden fikre alışmanız daha iyi olur). Bu konuda ilk yol, .NET'te küçük modüller yazmaya başlamak ve ardından ana VB6 uygulamasının bazı komut satırı parametrelerinde geçen .NET yürütülebilir dosyasını başlatmasını sağlamaktı. Bu işe yaradı, ancak .NET'in başlatma süresi 4 ila 10 saniye arasında olduğu konusunda uyarılmalıdır, bu nedenle bu şekilde yapabileceğiniz şeylerle sınırlısınız.

Bir kez gerçekten acı almaya başladı, ben strateji çevirdim ve ana .NET uygulamamda mevcut VB6 formları görüntülemek için bu CodeProject makaleden yöntemi kullandım . Bu rotadan indiğimde, yalnızca bir .NET başlangıç ​​zamanı isabetine girebildim ve dağıtım için VO6 uygulamasının daha önce nasıl dağıtıldığına kıyasla bir nimet olan ClickOnce'i kullanabildim.

Bununla birlikte, .NET'te VB6'ya göre bulduğum avantajlar:

  • Daha iyi kalıcılık çerçeveleri (NHibernate, EntityFramework, Linq2Sql vb.)
  • LINQ (Bunun ne kadar önemli olduğunu vurgulayamıyorum)
  • Jenerik!
  • Lambda sözdizimi ("ortadaki delik" gibi tüm problemleri zarif bir şekilde çözer)
  • Benzer şekilde Actionve Functürleri
  • Yansıma (nadiren kullandığınız bir şey, ancak yaptığınız zaman çok büyük)
  • Çok daha iyi birim testi desteği (elbette, diğer çalışanlarınızı birim testine ikna edeceğinizden şüpheliyim, ancak yapmalısınız)
  • ReSharper (ve diğer yeniden düzenleme / profil oluşturma araçları) (MZ-Tools'dan 10 kat daha iyi)
  • ClickOnce ve / veya Kurulum / Kurulum Projeleri
  • Windows Hizmet Projeleri
  • Gerçek nesne yönelimli destek (VB6 COM'a dayanmaktadır ve bu borçta gerçekten kötüdür.)
  • Statik yazma
  • XML desteği
  • WPF ve Windows Formları (VB6'nın kontrolleri çok sınırlayıcıdır)
  • WCF
  • Çok daha fazla örnek kod çevrimiçi
  • İstisnalar (VB6'nın hata işleme karşılaştırması kesinlikle korkunç)
  • Visual Studio'nun kaynak kontrolü entegrasyonu
  • Decimal tipi (VB6 hiçbir zaman birinci sınıf ondalık tipine sahip değildi, CDec olmasına rağmen)
  • İçin birinci sınıf destek Guid
  • 64 bit tamsayılar için birinci sınıf destek
  • Daha iyi koleksiyon kütüphaneleri
  • ReportViewer
  • Çok iş parçacığı, görev paralel kitaplığı

VB6'nın dezavantajları:

  • Bir performans göreceksiniz. Endişelenmek yeterli olmayabilir, ama bana güven, fark edeceksin. Sonuçta VB6 yerel kodu derler.

Adil olmak gerekirse, birleşik VB6 / .NET çözümünü korumanın bazı dezavantajları şunlardır:

  • İki veri erişim katmanını koruma (VB6 uygulamanızın aslında bir tane olduğunu varsayarak)
  • Hizmetleri / formları / vb. Ortaya çıkarmak için ekstra kablolama. bir taraftan diğer tarafa
  • Kafanızda tutmak için iki kat daha fazla karmaşıklık / mimari

Şimdi, ima ettiğiniz gibi, .NET'te kod yazmaya başlarsanız mimarinizi sıfırdan yeniden oluşturmalısınız. Ancak, şirketinizdeki hiçbir insanın .NET ve / veya Java programlama dünyasına aşina olmadığı anlaşılıyor.

Bir formdaki düğmeyi sürüklemeye, üzerine çift tıklamaya ve doğrudan tıklama olay işleyicisine bazı SQL dizeleri yazmaya alışkın olan birini alıyorsanız ve bu onlar için çalışıyorsa, SOLID'i takip etmenin bir avantajını görmelerini sağlamak gerçekten zor tasarım ilkeleri. Öte yandan, mermiyi ısırır ve tüm yeni kodların otomatik birim testleri ile% 90 veya daha fazla kapsanacağına karar verirseniz, SOLID tasarım ilkelerini benimsemediğiniz sürece bunun gerçekten zor olduğunu anlayacaksınız.

Bu yüzden durumun gerçekliğine gerçekten sert bir şekilde bakmanız gerekir. Benim durumumda, tek programcıydım ve onunla hiçbir deneyimim olmasa bile, tüm yeni kodların birim test edilmesine karar verdim. Bunun ilk haftada, hatta ilk aylarda yapabileceğimi ne kadar olumsuz etkilediğini yeterince vurgulayamıyorum. Yine de bunu yapmaya kararlıydım ve yönetimden katılım sağladım. Çoğu insanın bu lüksü yoktur. Şimdi kod bir sürü var ve ben hemen hemen hiçbir sorunları ile büyük bir yeniden düzenleme bitirdim.

Gerçekçi olarak, birim testleri yapmayacaksınız, yani ekip arkadaşlarınıza bağımlılık enjeksiyonu gibi ilkeleri haklı çıkarmak daha zor. Mimari avantajlar dışında avantajlar için .NET satmanız gerekecek . Daha iyi kütüphane desteği ve daha iyi araçlara odaklanmalısınız. Rezonansa girecek tek şey bu. Demonuzda aşağıdakileri öneririm:

  • Bir Windows Forms projesi oluşturun (WPF ve xaml'den uzak durun - bu çok şaşırtıcı)
  • SQL veritabanına bağlanma (bazı test veritabanı)
  • Bunun için bir veri modeli oluşturmak üzere Linq2Sql veya EntityFramework kullanın
  • Bazı varlık listelerini döndürme yöntemi olan bir havuz sınıfı oluşturma
  • Linq kullanarak bu yöntemde bir sorgu yazın, intellisense
  • Linq'in sadece objelerde değil, tüm nesnelerde çalıştığını gösterin
  • Veritabanını değiştirir ve modeli yeniden oluşturursanız, derleme hatası aldığınızı gösterin
  • DataGridViewAna pencereye bırakma
  • Izgarayı depodaki varlıklar ile doldurarak veritabanını gösterin
  • Izgara hakkında VB6'dan çok daha iyi olan tüm harika şeylere dikkat edin
  • Bir .rdlc dosyası oluşturma (rapor)
  • Visual Studio içinde basit bir rapor hazırlayın
  • Pencereye bir rapor görüntüleyici bırakın ve raporu rapor görüntüleyicinin içine yerleştirin
  • (Açıkçası ReportViewer yüklü olmalı ve tüm bunları önce uyguladınız)
  • Bir "orta delik" sorunu ile gel ve sonra Actionbir parametre olarak alır bir yöntem oluşturarak çözme göstermek . Bunu ilk olarak parametre olarak başka bir yöntem geçirerek yapın ve sonra lambda sözdizimini kullanarak anonim bir temsilci geçirerek aklınızı başınızdan alın
  • List<T>Ve Dictionary<T1,T2>toplama sınıflarını kullanarak jenerikleri gösterin ve nasıl güçlü yazılan kod oluşturduğunu gösterin (VB6'da benzer şeyler vardır, ancak dinamik olarak yazılmıştır)
  • foreachUtanç verici bir şekilde paralel olan bir döngü yazın , System.Diagnostics.Stopwatchyürütmek için gereken süreyi ölçmek için kullanın, ardından döngüyü bir Parallel.Foreachdöngüye dönüştürmek ve çok çekirdekli bir makinede olduğunuzu varsayarak hızlanmayı göstermek için görev paralel kitaplığını kullanın .
  • Genel bir istisna işleyicisi ekleme yeteneğini gösterin (bu, VB6'nın yapamayacağı bir şeydir)

Ben de öyle yapardım.


1

Bana öyle geliyor ki, bu sizin programcı yerine politikacı şapkanızı giymeniz gereken bir durum. Argümanınızı nasıl yaptığınıza ve kitlenizi karşıtlaştırmamanıza çok dikkat etmelisiniz. VB'nin dezavantajlarını göstermek yerine .Net'in avantajlarını gösterdiğinizden emin olun. VB'nin dezavantajlarını savunmak, iş arkadaşlarınızı kararlarını savunmaları gereken bir konuma getirecek ve ağır bir yatırım yaptıkları bir dilin kötü bir dil olduğunu kabul etmeye zorlayacak. Bunun yerine, onlara .NET'e geçmenin, sahip oldukları araçları nasıl artıracağını ve hayatlarını nasıl kolaylaştıracağını gösterin.

Bu argümanı yapmanın ideal yolu, herkesin sürekli olarak şikayet ettiği bir görevi veya kod parçasını bulmak ve .NET kullanarak düzeltmek olacaktır. Özellikle VB'ye aşina değilim, ama burada VB yerine .NET kullanılarak daha kolay hale getirilecek can sıkıcı görevlerin kısa bir listesi.

  • Dize İşleme
  • XML Ayrıştırma
  • Arıyor / Eşleştirme / Regex
  • Matematik (daha yeni diller genellikle daha hızlı, daha kapsamlı matematik kütüphanelerine sahiptir)
  • GUI binası / tasarımı

Yukarıdaki görevlerden herhangi birini veya genellikle üzerinde çalıştığınız projelere özgü başka bir görevi seçin ve onlarla birlikte oturun ve sorunu sıfırdan hızlı ve kolay bir şekilde ele alan bir kod yazın. Aslında kod yazma sürecini göstermek, VS'nin yeni sürümlerinin tabloya getirdiği araçları gösterecek ve .NET'e geçmenin kimsenin hayatını zorlaştıracağına dair kanıt sağlayacaktır.

Buna girerken, kesinlikle, olumlu bir şekilde ödev yapmalısınız. Araçların nasıl çalıştığından emin değilseniz veya düzgün çalışmayan bir kodunuz varsa, bunları asla sizin tarafınızdan kazanamayacaksınız.


0

Söylediğiniz ilk şey, VB6'nın artık Microsoft tarafından desteklenmediğidir. Çalıştırmaya devam etmenize rağmen, uzun vadede seçeneklerini sıfırlamak zorundasınız. VB6 uygulamalarının Windows8'de mi çalışacağını veya IDE'nin Win8'de çalışıp çalışmayacağını bile bilmiyorum.

Bu nedenle, etkili bir şekilde bir yeniden yazma işlemi yapmanız gerekir ve eğer durum buysa, daha sonra değil, şimdi de başlayabilirsiniz, hangi yeni teknolojiyi kullanmak istediğinizi anlamanız için size bolca zaman verebilirsiniz (VB.NET ideal görünüyor, bu, uygulamanın iPad'lerde çalışmasını sağlamak gibi daha ileri bir şeyi deneme fırsatınızdır).

Kısa vadede, mevcut uygulamanın tüketmesi için COM bileşenleri olarak yeni bölümler ekleyerek sorunu biraz hafifletebilirsiniz, umarım bu bileşenler kaçınılmaz yeniden yazma gerçekleştiğinde kalacaktır.

.NET'in neden VB6'dan daha iyi olduğuna dair teknik argümanlarla uğraşmam. Orada kaybedilen bir tartışmaya devam edeceksiniz, kendi içinde teknoloji asla problemleri çözmez. Bu teknolojiyi nasıl uygulayacağınız size kalmış ve VB6 uygulaması sizin için bir şey çözüyorsa, cevaplayacak bir argüman yoktur. Bakım kolaylığı veya deneyimli personelin kullanılabilirliği hakkında konuşabilirsiniz, ancak bunu yaptıktan sonra mevcut personelinizin yeni teknoloji konusunda hiçbir uzmanlığı olmadığını ve eğitilmesi gerekeceğini kabul edersiniz ve daha sonra hızlanmak için biraz zaman ayırın Bununla birlikte. Ayrıca, bir çok yeniden yazma işleminin orijinal projeden nasıl daha kötü sonuçlandığı ile ilgili soruları cevaplamanız gerekecektir (bazen uzmanlık eksikliğinden, bazen çok büyük tasarımlardan dolayı).


MS, Windows 8 çalıştıran Intel / AMD bilgisayarlarda VB6'yı destekleyecektir. VB6'da Metro uygulamaları yazamazsınız, ancak .NET uygulamalarını da .NET'te yazamazsınız. Her ikisi de Win32 üzerine inşa edilmiştir. .NET için C # ile yazılmış az kod az olduğu sözde Metro çalıştırmak için, ancak basit bir yeniden varlık üzerinde sayılmaz WinRT limana daha kolay olması.
Scott Whitlock

0

Ona "eski araba yeni vs araba" benzetmesini verin:

Evet, ikisi de sizi gideceğiniz yere götürecektir. Bununla birlikte, yeni araba bir krank gerektirmez , bir boğucuya ihtiyaç duymaz, haritalara ihtiyaç duymaz , keskin bir şekilde fren yaptığınızda tekerlekleri kilitlenmez ve sonunda bir araba kazasından uzaklaşmanız daha olasıdır .

  • VB6 eski, yeni COBOL
  • .NET daha iyi çerçevelere sahiptir
  • .NET daha iyi takımlara sahiptir
  • .NET daha iyi performansa sahiptir
  • .NET daha iyi IDE'ye sahip
  • .NET daha iyi dil desteğine sahiptir
  • .NET daha iyi özelliklere sahiptir
  • .NET daha iyi topluluk desteğine sahiptir

7
Araba analojileri genellikle başarısız olur ve sizinki farklı değildir. Bir şey, bir o eski araba bir ettiğini yeni araba da ödeme edilir değil! Eğer bir taksi sahibi ve için ödenen ve bu bakım maliyeti daha fazla para kazanmak oldu ve yeni bir araba yerine bir iş kişi olarak olurdu olurdu

2
@JarrodRoberson Ödendi, ancak daha sık fren yapma eğilimindeler ve bir süre sonra artık çalışmaz. Araba analojileri harika. :)
Steven Jeuris

1
Aslında, bu araba benzetmesi iyidir. OP'nin patronu taksinin devam ettiğini ve OP'nin ona yaklaşırken bunu düşünmesi gerektiğini söyledi. Tam bir anahtar bir gün içinde gerçekleşemez, ancak parçaları birbiri ardına hareket ettirmeye, parçaları değiştirmeye başlayalım.
ZJR

1
İşletme sahibi bunu kendisi tasarladı ve yaptı . Büyük olasılıkla birçok kez kendini ödedi ve bakım sadece 3 geliştirici olduğu ve onlardan biri olduğu için tüm amaç ve amaçlar için ücretsiz. Dediğim gibi, araba analojileri korkunç, özellikle bu ve tamamen benim temel iş dışı argümanlar ile benim açımdan. Yeni yazılım en iyi ihtimalle onu yıldan yıla çok daha küçük bir kar haline getirecek ve en kötü zamanda belirsiz bir süre için para kaybedecektir.

2
Uygulamalar hiçbir var aşınma ve yıpranma entropi fiziksel öğeler yaptığı gibi onlar kalmamak onlar, ya doğal olarak atrofi yok, yıpranacaktır , ne de yok yıkmak fiziksel öğeler ile analojiler, özellikle otomobiller için geçerli değildir bu yüzden ne olursa olsun kullanım. Bir uygulama, amaca hizmet ettiği sürece sonsuza kadar çalışır. Birkaç yıl önce çalıştığım bir şirkette kapılardaki kart okuyucuları kontrol eden eski bir MS-DOS tabanlı makine vardı. Yazılımın aşındığı fikri saçmadır. Bu, iyi bir yaşam sonu planının her zaman yerinde olması gerektiğini söyledi. Bu plan yazılımı asla tekrar yazmamak olsa bile.

0

Öncelikle soruyu değiştirmeniz gerektiğini düşünüyorum (stackexchange'te değil, şirketinizde). Neden bu kadar iyi değil. Net VB6'dan daha iyi, ama daha çok VB6 desteklenmediği için devam etme zamanı, ama neye. Paydaşlara bu yeni teknolojinin ne olması gerektiğini sorun. Belki de .Net değil.

Eğer yeni bir teknolojiye geçmek gerekiyor gibi Ama bu sesler VE yerinde bazı iyi programlama modellerini ve uygulamalarını olsun. İkinci bölümün cevabı çok daha zor. Muhtemelen uygulamanın küçük bölümünde yapmanız ve buna değer olduğunu kanıtlamanız gerekir, yani daha kararlı, bakımı daha kolaydır, vb.


-1

Patronlarınıza iki reklam istemelerini söyleyin. C # geliştiricileri için bir tane. Biri VB6 uzmanları için. Onları oraya koy. Sonuçları karşılaştırın.

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.