Tôi có một buổi chiều để trích dẫn những lợi ích của .NET so với VB6, tôi nói gì? [đóng cửa]


9

Công ty của tôi là một công ty kỹ thuật nhỏ hai mươi người. Tất cả các chương trình ứng dụng ở đây được thực hiện trong VB6 bởi hai người, những người đã tự học VB6 từ một nền tảng lắp ráp trong khi làm việc ở đây trong hơn 25 năm qua, và bản thân tôi.

Kết quả là, mã VB6 bị đánh đố với mùi mã khủng khiếp, như hàng tấn biến được gõ chuỗi, hàm dài khủng khiếp, hàng trăm biến toàn cục công khai (một số biến được ưu tiên hơn là chuyển qua các đối số và trả về giá trị), và không phải là một đối tượng lớp học. Tái cấu trúc là không thể, và bất kỳ thay đổi nào cũng đòi hỏi quá nhiều việc đào mã, và một khi được thực hiện, dường như luôn đưa ra nhiều lỗ hổng hơn.

Sếp của tôi đang nhận ra rằng VB6 là một công nghệ đã chết và sẵn sàng lắng nghe những lời cầu xin của tôi để chuyển sang .NET để phát triển mới. Chúng tôi đang tiến tới .NET, nhưng anh ấy xem đó là một cách để theo kịp khả năng tương thích với các HĐH Windows mới hơn, chứ không phải là một cách để viết mã tốt hơn.

Làm cách nào tôi có thể giải thích tốt nhất các lợi ích của ngôn ngữ .NET so với VB6, ngoài việc cập nhật đơn thuần? Tôi có thể nói gì để nhấn mạnh tốt nhất rằng việc chuyển sang .NET là một động thái tốt nhưng cũng có nghĩa là mô hình lập trình hiện tại của chúng ta cũng nên bắt đầu thay đổi? Ngay khi ông chủ của tôi nghe thấy Visual Basic .NET trông giống như VB6, tôi biết rằng bản năng đầu tiên của anh ta sẽ chỉ đơn giản là chuyển đổi mớ hỗn độn mã cũ của chúng tôi sang .NET.

Tôi hiểu rằng sẽ không thể thay đổi suy nghĩ của bất kỳ ai trong một buổi chiều, nhưng ít nhất tôi có thể thuyết phục ông chủ lắp ráp của mình rằng những thứ như biến được gõ mạnh, lớp tùy chỉnh và trường riêng không hoàn toàn lãng phí thời gian và năng lượng?


4
Nhà phát triển VB6 là một giống chết? Hãy thử tuyển dụng các nhà phát triển .NET và các nhà phát triển VB6. Xem có bao nhiêu CV bạn nhận được cho mỗi. Thực tế là một khi 2 bộ tính giờ cũ nghỉ hưu, sẽ không có sự thay thế (hay đúng hơn là thay thế rất tốn kém ) nên đủ để tranh luận.
Oded

3
Tôi đánh giá cao rằng anh ta có thể cố gắng , nhưng hầu hết các nhà phát triển tự tôn trọng sẽ tránh xa ngôn ngữ chết chóc. Không chắc chắn khi MS sẽ ngừng hỗ trợ VB6, nhưng việc tìm kiếm tài nguyên ngày càng khó khăn (và sản phẩm cuối đời là một lập luận khác chống lại VB6). Không chắc điều này sẽ giúp được bao nhiêu, nhưng hãy nghiên cứu: msdn.microsoft.com/en-us/vstudio/ms788708.aspx - 2008 là thời điểm kết thúc của IDE. Và tôi thích "Thỏa thuận hỗ trợ tùy chỉnh có thể có sẵn từ Microsoft" - với mức phí nào, tôi tự hỏi ...
Oded

1
@Oded Thật không may, không có đối số nào trong số những đối số này thực sự chạm đến thực tế rằng VB.NET có thể được sử dụng như là một thay thế cho VB6, các biến công khai toàn cầu và tất cả. Khi chúng tôi đang sử dụng .NET , làm thế nào để chúng tôi thực sự sử dụng tất cả các lợi ích của nó?
dlras2

1
Có thể giải thích bằng các ví dụ. Có một số vấn đề khó giải quyết trong VB6 sẽ dễ giải quyết hơn trong VB .NET? Bạn có thể chọn một số ví dụ từ cơ sở mã của mình và chỉ ra cách chúng có thể được dọn sạch thành mã tốt hơn trong .NET không thể thực hiện được với các tính năng trong VB6 không?
Thất vọngWithFormsDesigner

1
@DanRasmussen VB.NET không thể nhập chính xác các dự án VB6 (đã sửa chưa?). Nó là không tầm thường để nâng cấp.

Câu trả lời:


16

Trả lời ngắn: Bạn không thể làm gì để thay đổi suy nghĩ của họ dựa trên các tiêu chí bạn liệt kê trong câu hỏi là tất cả các kỹ thuật . Điều này tương đương với một cuộc tranh luận tôn giáo . Con đường nhanh nhất dẫn đến thất bại là đưa ra một lập luận không theo quan điểm của khán giả, trong trường hợp này là chủ doanh nghiệp .

Trả lời dài hơn: Thay đổi trong kinh doanh được thúc đẩy bởi một điều và một điều duy nhất. Lợi nhuận đến điểm mấu chốt.

... Làm thế nào ít nhất tôi có thể thuyết phục ông chủ lắp ráp của mình rằng những thứ như biến được gõ mạnh, các lớp tùy chỉnh và trường riêng không phải là một sự lãng phí toàn bộ thời gian và năng lượng?

Chúng không chỉ gây lãng phí thời gian và năng lượng mà quan trọng hơn là chúng khiến bạn mất tiền ! Bạn phải có khả năng chỉ ra một cách định lượng rằng các đề xuất của bạn sẽ dẫn đến lợi nhuận đáng kể theo thời gian. Chỉ yêu cầu mã sạch"tốt hơn" là không đủ, bởi vì mã sạch sẽ tốn nhiều chi phí hơn để sản xuất.

Nếu bạn có thể nói rõ như thế nào chi phí của việc sử dụng công nghệ hiện đại sẽ dẫn đến ($COST + X) * TIME = $PROFIT, nơi Xlà một tổ chức phi tầm thường postive số và TIMEtương đối ngắn, bạn có thể tạo ra một kịch bản hấp dẫn.

Một cách khác để tính ROI (Tỷ lệ hoàn vốn đầu tư)

Công thức ROI

Nếu ROI / ROR này là một con số không đáng kể, đặc biệt là trong một khoảng thời gian dài, bạn cũng không có nhiều trường hợp kinh doanh.

Làm thế nào để công ty của bạn thực sự kiếm tiền của họ?

Có bao nhiêu dòng mã? có bao nhiêu khách hàng Phần mềm này tạo ra bao nhiêu doanh thu một năm? doanh thu chủ yếu là hợp đồng hỗ trợ? hay giấy phép mới? thị trường mục tiêu có ổn định không? mở rộng? ký kết hợp đồng? phần mềm có phải là một nhà lãnh đạo thua lỗ cho một số sản phẩm có lợi nhuận cao hơn nhiều không?

Thật khó để một người kinh doanh giỏi bỏ qua tiền đặt trên bàn.

Tất nhiên bạn phải có khả năng sao lưu các tuyên bố của bạn với sự thật khó khăn. Điều này có nghĩa là bạn cần có khả năng cung cấp những con số thực cho thấy bạn thực sự hiểu về kinh doanh thực tế chứ không chỉ là chi tiết kỹ thuật học thuật.

Không chỉ là ưu điểm

Đồng thời cung cấp một phân tích rủi ro chi tiết và những rủi ro này sẽ $COSTxảy ra nếu chúng xảy ra, sẽ tiếp tục thuyết phục họ rằng bạn có một trường hợp thực tế và không chỉ than vãn rằng bạn không muốn làm VB6 nữa.

Dạy chó già thủ đoạn mới

... Tôi có thể nói gì để nhấn mạnh nhất rằng việc chuyển sang .NET là một động thái tốt nếu và chỉ khi mô hình lập trình hiện tại của chúng tôi cũng bắt đầu thay đổi? ...

Thay đổi hoặc không thay đổi mô hình lập trình để trở thành thành ngữ nhất có thể của công nghệ mới là một phần của phân tích rủi ro. Nhưng đây chỉ là một lập luận riêng biệt sau khi bạn đã chứng minh rằng sẽ có một khoản tiền đáng kể được thực hiện bằng cách thay đổi ngay từ đầu.

Người kinh doanh có xu hướng lắng nghe các trường hợp kinh doanh giống như người kỹ thuật có xu hướng lắng nghe các trường hợp kỹ thuật. Tất cả các trường hợp của bạn trong câu hỏi của bạn là những thành tích kỹ thuật tốt nhất trong tình huống của bạn.

Sự dự đoán

Tôi đang đưa ra một vài giả định ở đây là ứng dụng VB6, cửa hàng nhỏ, ít nhà phát triển, 2 chủ sở hữu nhà phát triển / doanh nghiệp lớn tuổi đang chỉ đến một ứng dụng thị trường thích hợp có thể đã trưởng thành (đã biết lỗi và hoạt động xung quanh), khá đầy đủ và tương đối ổn định, bất kể của "mớ hỗn độn" cơ sở mã là. Điều này khiến tôi tin rằng cơ sở người dùng nhỏ không tăng trưởng đột biến qua từng năm, điều này dẫn tôi đến kết luận sau.

Rằng thực sự sẽ không có bất kỳ lý do kinh doanh thực sự thuyết phục nào để thay đổi hướng kỹ thuật với ứng dụng này. Và chuyển lên VB.Net cũng là một sự lãng phí thời gian vì bạn sẽ chỉ gặp rắc rối nhưng bây giờ với nhiều thứ hơn và 2/3 nhóm phát triển không dành riêng cho việc học bất cứ điều gì mới. Chúc may mắn.


2
Thật không may, chi phí viết lại (cộng với đào tạo, cộng với chuyên môn) thường vượt xa chi phí để duy trì ứng dụng chạy, ít nhất là trong các điều khoản ngắn và trung bình. Tuy nhiên, về lâu dài, bạn có nguy cơ rằng bản thân việc viết lại của bạn có thể cần phải được viết lại trong $ next_new_tĩ.
gbjbaanb

4
Tranh luận tôn giáo +1. Nếu OP muốn làm việc trong .NET, anh ta nên kiếm một công việc trong một cửa hàng .NET; Tôi muốn nói rằng việc chuyển từ VB6 sang .NET trong công ty này là một rủi ro lớn với lợi ích đáng ngờ.
Kirk Broadhurst

Câu trả lời tuyệt vời, ngoại trừ bạn đọc lướt qua phần của anh ấy về "Tái cấu trúc là không thể, và bất kỳ thay đổi nào cũng đòi hỏi quá nhiều thông qua mã, và một khi được thực hiện, dường như luôn đưa ra nhiều lỗ hổng hơn." Đó là tuyên bố cuối cùng có giá trị cho doanh nghiệp. Chứng minh rằng họ không thể thay đổi codebase mà không tốn chi phí đáng kể tiền kinh doanh là một lập luận rất hợp lệ phù hợp với câu trả lời của bạn. Tất nhiên, các số liệu phải có mặt để sao lưu tuyên bố đó.

@ GlenH7 cá nhân Tôi nghĩ rằng những gì bạn trích dẫn là ý kiến ​​cá nhân và hùng biện kịch tính bởi vì OP không thể hiện bất kỳ mối quan tâm nào cho bất cứ điều gì ngoài việc đưa ra ý kiến ​​cá nhân và chương trình nghị sự của họ. Câu trả lời của tôi là đề xuất rằng họ không xem xét trình điều khiển thực sự để thay đổi sẽ là gì và đó không phải là những gì họ nghĩ hoặc đã xem xét. Quan điểm của tôi là những thay đổi gia tăng trong một thời gian dài "đắt đỏ" sẽ luôn rẻ hơn so với những gì họ đang đề xuất trong cùng một khoảng thời gian. Làm những gì họ nói, và những gì bạn trích dẫn một cuộc tranh luận kinh doanh không thể phủ nhận.

Đồng ý rằng có một mức độ hùng biện trong tuyên bố. Một số cửa hàng (và không, nói chung họ không phải là những cửa hàng nhỏ) theo dõi các thất bại / thoát để có thể tạo ra các số liệu cứng về các lỗi. OTOH, hầu hết các cửa hàng không lưu giữ thông tin đó và không có gì khác hơn là "cảm giác ruột" không được tính nhiều trong một bài thuyết trình kinh doanh.

11

Tôi có một khách hàng có sản phẩm chủ lực được viết bằng VB6 và được duy trì bởi 3 người. Tôi đến để giúp họ vì họ có một đối tác muốn họ gọi một dịch vụ web. Điều đó rất khó thực hiện từ VB6, nhưng dễ dàng từ VB.NET hoặc C #, và tôi đã viết cho họ một cụm .NET trông giống VB6 giống như một thành phần COM để họ có thể gọi nó. Sau đó, họ cần phải cung cấp một dịch vụ web cho một ai đó. Sau đó, họ muốn viết một tiện ích độc lập nhỏ và nó sẽ cần mã hóa và giải mã một số thông tin và phân tích một số XML. Tôi đã dạy họ viết nó bằng .NET. Trong khoảng 5 năm trở lại đây, ngày càng nhiều mã của họ ở trong .NET mặc dù sản phẩm chủ lực đã không bị thu hẹp chút nào. Có những phần mà họ ghét - mọi ứng dụng đều có chúng - và nơi họ có thể rút những phần này ra (bây giờ bắt đầu thu hẹp) và đưa chúng vào các dịch vụ hoặc các tiện ích riêng biệt. Phần còn lại của nó sẽ được chuyển đổi holus-bolus sang .NET. Yup, tên biến xấu và tất cả - theo tôi có rất nhiều lợi ích khi chuyển sang .NET ngay cả khi chúng không thay đổi mô hình lập trình hiện tại của chúng. Bao gồm các:

  • bạn có thể sử dụng Visual Studio mới nhất với tìm kiếm tốt hơn, Intellisense tốt hơn, bản dựng nhanh hơn, v.v.
  • bạn có thể tích hợp với một hệ thống kiểm soát nguồn tốt (không phải VSS)
  • có những thư viện đi kèm với .NET miễn phí giúp thực hiện những công việc ngắn như mã hóa, phân tích cú pháp XML, xử lý hình ảnh và hơn thế nữa
  • quốc tế hóa và bản địa hóa dễ dàng hơn nhiều đối với một dự án .NET (điều này, với một cuộc điều tra từ một khách hàng lớn ở Canada, người sẽ cần cả hai phiên bản tiếng Pháp và tiếng Anh, có thể đã đưa ra số dư cho khách hàng của tôi)
  • các thư viện điều khiển rẻ tiền (Telerik, Infragistic, ElementOne, v.v.) cung cấp cho bạn các khả năng tuyệt vời mà hầu như không mất phí
  • Sẽ dễ dàng hơn nhiều để tìm kiếm sự giúp đỡ tạm thời, như một sinh viên mùa hè, trong trường hợp thời gian dành cho việc dạy họ VB6 không đáng (đừng thảo luận về cách bạn cảm nhận về việc dạy nó cho một người thuê toàn thời gian mới)
  • ứng dụng của bạn sẽ được UAC biết, vì vậy nó sẽ chạy tốt hơn trên Vista, 7 và 8. Nó không cần phải chạy trong chế độ tương thích XP

Có nhiều hơn, nhưng chắc chắn là đủ?

Vấn đề về mô hình lập trình, đánh máy mạnh, trình biên dịch là bạn của bạn, đóng gói là bạn của bạn và cứ thế tôi nghĩ (và tôi được trả tiền để có những ý kiến ​​này) hoàn toàn riêng biệt. Nếu bạn muốn chết trên ngọn đồi đó, hãy tiếp tục, nhưng bạn sẽ chết với một bản sao VB6 đang mở.


Bạn có ý nghĩa gì bởi đoạn kết thúc của bạn?
dlras2

6
Rằng "chuyển sang .NET" và "tất cả hãy lập trình một cách khác nhau" là khác nhau, và nếu bạn chọn chiến đấu với cách thứ hai, không chỉ bạn không có khả năng thành công, bạn gần như chắc chắn sẽ không chuyển chúng sang. NET với cách tiếp cận đó. Ý tôi là tôi đồng ý họ nên lập trình một cách khác. Nhưng đường dẫn tốt nhất đến .NET là "giống như những gì bạn có bây giờ, nhưng với sốt sô cô la và rắc!"
Kate Gregory

Tôi hiểu lợi ích của việc tiếp cận chúng như các vấn đề khác nhau, nhưng vấn đề là tiếp cận chúng như các vấn đề riêng biệt chỉ đơn giản là đảm bảo các chương trình không thể nhầm lẫn như nhau, chỉ trong .NET.
dlras2

1
Bạn sẽ có các ứng dụng tốt hơn (điều khiển đẹp hơn, nhiều chức năng hơn) và một số quy trình tốt hơn (lén kiểm soát nguồn và thậm chí có thể theo dõi mục công việc) cùng với các nhà phát triển giờ đây thấy rằng nó có thể được thực hiện khác nhau và nỗi đau của việc thay đổi là đáng giá nó vì những lợi ích tuyệt vời Họ sẽ dễ tiếp thu hơn với điều tiếp theo bạn yêu cầu họ. Và "không thể nhầm lẫn" không phải là nhị phân. Mã sẽ không tuyệt vời, nhưng tình hình vẫn sẽ tốt hơn nó. Bạn cũng sẽ được chứng minh uy tín.
Kate Gregory

8

Tôi đã bắt đầu với một dự án VB6 vài năm trước (hệ thống ERP tùy chỉnh của công ty) và tôi đã dần dần chuyển nó sang .NET. Nó ở đâu đó khoảng một nửa.

Trước hết, chuyển đổi từ VB6 sang VB.Net hầu như luôn là một ý tưởng tồi (và tôi đã nghiên cứu rất nhiều về điều đó). Có quá nhiều khác biệt. Ngoài ra, nếu sếp của bạn nghĩ rằng VB.Net "giống như VB6" thì anh ta hoàn toàn nhầm lẫn và bạn phải thay đổi cách nhìn của anh ta thật nhanh.

Chiến lược của tôi là giữ hai cơ sở mã riêng biệt và duy trì chúng một cách riêng biệt và sau đó từ từ chuyển toàn bộ các mô-đun từ VB6 sang .NET nhưng chỉ khi có một thay đổi đáng kể sắp xảy ra với mô-đun đó, vì vậy chúng tôi có thể khấu hao một phần chi phí. Mặc dù vậy, viết lại là một nhiệm vụ lớn và tốn kém.

Có hai cách để tích hợp VB6 hiện tại với mã .NET mới (và có lẽ bạn sẽ thực hiện điều đó trong một thời gian rất dài, vì vậy bạn nên làm quen với ý tưởng này). Cách đầu tiên tôi đã làm là bắt đầu viết các mô-đun nhỏ trong .NET và sau đó ứng dụng VB6 chính khởi chạy .NET thực thi chuyển qua một số tham số dòng lệnh. Điều này đã hoạt động, nhưng được cảnh báo rằng .NET có thời gian khởi động từ 4 đến 10 giây, vì vậy bạn bị giới hạn trong những gì bạn có thể làm theo cách này.

Khi nó bắt đầu trở nên thực sự đau đớn, tôi đã lật chiến lược và sử dụng phương thức từ bài viết CodeProject này để hiển thị các biểu mẫu VB6 hiện có trong ứng dụng .NET chính của tôi. Khi tôi đi xuống tuyến đường này, tôi chỉ có thể phải chịu một lần nhấn .NET thời gian khởi động và sử dụng ClickOnce để triển khai, đây là một ưu đãi so với cách ứng dụng VB6 đã được triển khai trước đó.

Điều đó nói rằng, đây là những lợi thế tôi tìm thấy trong .NET so với VB6:

  • Các khung kiên trì tốt hơn (NHibernate, EntityFramework, Linq2Sql, v.v.)
  • LINQ (Tôi không thể nhấn mạnh đủ tầm quan trọng của việc này)
  • Thế hệ!
  • Cú pháp Lambda (giải quyết cả một lớp các vấn đề như "lỗ ở giữa" một cách thanh lịch)
  • Tương tự ActionFunccác loại
  • Reflection (thứ mà bạn hiếm khi sử dụng, nhưng khi bạn làm nó rất lớn)
  • Hỗ trợ kiểm tra đơn vị tốt hơn nhiều (tất nhiên, tôi nghi ngờ bạn sẽ thuyết phục các nhân viên khác của mình kiểm tra đơn vị, nhưng bạn nên)
  • ReSharper (và các công cụ tái cấu trúc / lược tả khác) (tốt hơn 10 lần so với MZ-Tools)
  • ClickOnce và / hoặc Thiết lập / Cài đặt dự án
  • Dự án dịch vụ Windows
  • Hỗ trợ hướng đối tượng thực sự (VB6 dựa trên COM và thực sự tệ trong phòng này.)
  • Gõ tĩnh
  • Nướng trong hỗ trợ XML
  • WPF và Windows Forms (các điều khiển của VB6 rất hạn chế)
  • WCF
  • Nhiều ví dụ mã trực tuyến
  • Các trường hợp ngoại lệ (xử lý lỗi của VB6 là hoàn toàn khủng khiếp khi so sánh)
  • Tích hợp kiểm soát nguồn của Visual Studio
  • Decimal loại (VB6 không bao giờ có loại thập phân hạng nhất, mặc dù nó có CDec)
  • Hỗ trợ hạng nhất cho Guid
  • Hỗ trợ hạng nhất cho số nguyên 64 bit
  • Thư viện bộ sưu tập tốt hơn
  • Trình xem báo cáo
  • Đa luồng, thư viện tác vụ song song

Nhược điểm của VB6:

  • Bạn sẽ nhận thấy một hiệu suất nó. Nó có thể không đủ để lo lắng, nhưng tin tôi đi, bạn sẽ nhận ra điều đó. VB6 biên dịch thành mã gốc sau khi tất cả.

Công bằng mà nói, đây là một số nhược điểm của việc duy trì giải pháp VB6 / .NET kết hợp:

  • Duy trì hai lớp truy cập dữ liệu (giả sử ứng dụng VB6 của bạn thực sự có một lớp)
  • Thêm dây để lộ các dịch vụ / hình thức / vv. từ bên này sang bên kia
  • Hai lần phức tạp / kiến ​​trúc để giữ trong đầu của bạn

Bây giờ, như bạn đã gợi ý, bạn thực sự phải xây dựng lại kiến ​​trúc của mình từ đầu nếu bạn bắt đầu viết mã bằng .NET. Tuy nhiên, có vẻ như không ai trong công ty của bạn quen thuộc với thế giới lập trình .NET và / hoặc Java, nơi có rất nhiều mô hình và thực tiễn phổ biến đối với các khung công tác doanh nghiệp lớn.

Nếu bạn lấy ai đó đã từng kéo nút trên biểu mẫu, nhấp đúp vào nút đó và viết một số chuỗi SQL trực tiếp trong trình xử lý sự kiện nhấp chuột và điều đó rất hiệu quả với họ, thật khó để làm cho họ thấy lợi thế khi theo dõi RẮN nguyên tắc thiết kế. Mặt khác, nếu bạn cắn viên đạn và quyết định rằng tất cả các mã mới sẽ được bao phủ 90% hoặc cao hơn bằng các thử nghiệm đơn vị tự động, thì bạn sẽ nhanh chóng nhận ra rằng điều đó thực sự khó thực hiện trừ khi bạn áp dụng các nguyên tắc thiết kế RẮN.

Vì vậy, bạn cần phải có một cái nhìn thực sự khó khăn về thực tế của tình huống. Trong trường hợp của tôi, tôi là lập trình viên duy nhất và tôi đã xác định rằng tất cả mã mới sẽ được kiểm tra đơn vị, mặc dù tôi không có kinh nghiệm với nó. Tôi không thể nhấn mạnh đủ mức độ ảnh hưởng tiêu cực này đến những gì tôi có thể làm trong tuần đầu tiên, thậm chí là những tháng đầu tiên. Tuy nhiên, tôi đã quyết tâm làm điều đó và tôi đã mua lại từ ban quản lý. Hầu hết mọi người không có sự sang trọng đó. Bây giờ tôi có rất nhiều mã và tôi vừa hoàn thành một phép tái cấu trúc lớn mà hầu như không có vấn đề gì.

Trên thực tế, bạn sẽ không thực hiện các bài kiểm tra đơn vị, điều đó có nghĩa là khó biện minh cho các nguyên tắc như tiêm phụ thuộc vào các đồng đội của bạn. Bạn sẽ phải bán .NET dựa trên những lợi ích khác ngoài lợi ích kiến ​​trúc. Bạn phải tập trung vào hỗ trợ thư viện tốt hơn và các công cụ tốt hơn. Đó là điều duy nhất sẽ gây được tiếng vang. Tôi sẽ đề nghị như sau trong bản demo của bạn:

  • Tạo một dự án Windows Forms (tránh xa WPF và xaml - nó quá giật mình)
  • Kết nối với cơ sở dữ liệu SQL (một số cơ sở dữ liệu thử nghiệm)
  • Sử dụng Linq2Sql hoặc EntityFramework để tạo mô hình dữ liệu cho nó
  • Tạo một lớp kho lưu trữ có một phương thức để trả về một số danh sách các thực thể
  • Viết một truy vấn trong phương thức đó bằng linq, chỉ ra intellisense
  • Chỉ ra rằng linq hoạt động trên tất cả các đối tượng, không chỉ các thực thể
  • Chỉ ra rằng nếu bạn thay đổi cơ sở dữ liệu và tạo lại mô hình, bạn sẽ gặp lỗi biên dịch
  • Thả một cái DataGridViewtrên cửa sổ chính
  • Chứng minh cơ sở dữ liệu bằng cách điền vào lưới với các thực thể từ kho lưu trữ
  • Chỉ ra tất cả những thứ hay ho về lưới điện tốt hơn nhiều so với VB6
  • Tạo một tệp .rdlc (báo cáo)
  • Tạo một báo cáo đơn giản bên trong Visual Studio
  • Thả trình xem báo cáo trên cửa sổ và hiển thị báo cáo bên trong trình xem báo cáo
  • (Rõ ràng là bạn cần cài đặt ReportViewer và đã thực hành tất cả điều này trước tiên)
  • Hãy đưa ra một vấn đề "lỗ ở giữa" và sau đó chứng minh giải quyết nó bằng cách tạo ra một phương thức lấy Actiontham số làm tham số. Thực hiện điều này trước tiên bằng cách chuyển một phương thức khác làm tham số, và sau đó thổi bay tâm trí của chúng bằng cách chuyển một đại biểu ẩn danh bằng cú pháp lambda
  • Thể hiện tổng quát bằng cách sử dụng các lớp List<T>Dictionary<T1,T2>bộ sưu tập và chỉ ra cách nó tạo mã được gõ mạnh (VB6 có nội dung tương tự, nhưng nó được gõ động)
  • Viết một foreachvòng lặp song song lúng túng, sử dụng System.Diagnostics.Stopwatchđể đo thời gian thực hiện, sau đó sử dụng thư viện song song tác vụ để thay đổi vòng lặp thành Parallel.Foreachvòng lặp và thể hiện tốc độ, giả sử bạn đang sử dụng máy đa lõi.
  • Thể hiện khả năng thêm trình xử lý ngoại lệ toàn cầu (đây là điều mà VB6 không thể làm)

Đó là những gì tôi sẽ làm.


1

Dường như với tôi rằng đây là một tình huống mà bạn sẽ cần phải đội chiếc mũ chính trị gia của bạn thay vì lập trình của bạn. Bạn phải rất chú ý đến cách bạn đưa ra lập luận của mình và rằng bạn không đối kháng với khán giả của mình. Hãy chắc chắn rằng bạn hiển thị các ưu điểm của .Net thay vì hiển thị các nhược điểm của VB. Lập luận về những bất lợi của VB sẽ đặt đồng nghiệp của bạn vào vị trí mà họ cần bảo vệ quyết định của mình và buộc họ phải thừa nhận rằng một ngôn ngữ mà họ đầu tư lớn là ngôn ngữ xấu. Thay vào đó, hãy chỉ cho họ cách chuyển sang .NET sẽ tăng cường các công cụ họ có sẵn cho họ và làm cho cuộc sống của họ dễ dàng hơn.

Cách lý tưởng của tôi để đưa ra lập luận này sẽ là tìm một tác vụ hoặc đoạn mã mà mọi người thường xuyên phàn nàn và sửa nó bằng .NET. Tôi không đặc biệt quen thuộc với VB, nhưng đây là một danh sách ngắn các nhiệm vụ gây phiền nhiễu có thể sẽ được thực hiện dễ dàng hơn bằng cách sử dụng .NET thay vì VB.

  • Thao tác chuỗi
  • Phân tích cú pháp XML
  • Tìm kiếm / Kết hợp / Regex
  • Toán học (ngôn ngữ mới hơn thường có thư viện toán học nhanh hơn, toàn diện hơn)
  • Thiết kế / xây dựng GUI

Chọn bất kỳ một trong các nhiệm vụ trên hoặc một số nhiệm vụ khác cụ thể cho các dự án bạn thường làm, ngồi xuống với chúng và thực sự viết một số mã, từ đầu, xử lý vấn đề nhanh chóng và dễ dàng. Trên thực tế, việc hiển thị quá trình viết mã sẽ hiển thị các công cụ mà các phiên bản mới hơn của VS mang đến cho bảng và cung cấp bằng chứng cho thấy việc chuyển sang .NET sẽ không khiến cuộc sống của bất kỳ ai khó khăn hơn.

Đi sâu vào vấn đề này, bạn nhất định, tích cực phải làm bài tập về nhà. Nếu bạn không chắc chắn về cách thức các công cụ hoạt động hoặc có mã không hoạt động chính xác, bạn sẽ không bao giờ có thể giành được chúng về phía bạn.


0

Điều đầu tiên bạn nói là VB6 không còn được Microsoft hỗ trợ. Trong khi bạn có thể giữ cho nó chạy, bạn phải hiểu các tùy chọn của nó trong dài hạn là không. Tôi thậm chí không biết các ứng dụng VB6 sẽ chạy trên Windows8 hay IDE sẽ chạy trên Win8.

Vì vậy, cuối cùng bạn phải viết lại một cách hiệu quả và nếu đúng như vậy, bạn cũng có thể bắt đầu ngay bây giờ thay vì sau đó, cho bạn nhiều thời gian để tìm ra công nghệ mới nào bạn muốn sử dụng (trong khi VB.NET nghe có vẻ lý tưởng, đây là cơ hội của bạn để thử một thứ gì đó tiên tiến hơn, như làm cho ứng dụng hoạt động trên iPad).

Trong ngắn hạn, bạn có thể giảm thiểu vấn đề một chút bằng cách giới thiệu các phần mới dưới dạng các thành phần COM cho ứng dụng hiện có để tiêu thụ, hy vọng các thành phần này sẽ vẫn tồn tại khi việc viết lại không thể tránh khỏi xảy ra.

Tôi sẽ không bận tâm với các đối số kỹ thuật về lý do tại sao .NET tốt hơn VB6. Bạn sẽ có một cuộc tranh cãi ở đó, bản thân công nghệ không bao giờ giải quyết được vấn đề. Tùy thuộc vào cách bạn áp dụng công nghệ đó và nếu ứng dụng VB6 đang giải quyết vấn đề cho bạn, sẽ không có tranh luận để trả lời. Bạn có thể nói về sự dễ bảo trì, hoặc sự sẵn có của đội ngũ nhân viên giàu kinh nghiệm, nhưng một khi bạn làm điều đó, bạn thừa nhận rằng nhân viên hiện tại của bạn không có chuyên môn về công nghệ mới và sẽ phải được đào tạo, và sau đó mất một thời gian để hoàn toàn theo kịp tốc độ với nó. Bạn cũng sẽ phải trả lời các câu hỏi về việc có bao nhiêu bài viết lại kết thúc tồi tệ hơn dự án ban đầu (đôi khi do thiếu chuyên môn, đôi khi do thiết kế quá lớn).


MS sẽ hỗ trợ VB6 trên PC Intel / AMD chạy Windows 8. Bạn không thể viết ứng dụng Metro trong VB6, nhưng bạn cũng không thể viết ứng dụng Metro bằng .NET. Cả hai đều được xây dựng trên Win32. Ít nhất mã được viết bằng C # cho .NET được cho là dễ dàng chuyển sang WinRT hơn để chạy trên Metro, nhưng đừng tin rằng đó là một bản dựng lại đơn giản.
Scott Whitlock

0

Cung cấp cho anh ta tương tự "xe cũ vs xe":

Có cả hai có thể sẽ đưa bạn đến đích của bạn. Tuy nhiên, chiếc xe mới không cần quây , nó không cần sặc , nó không cần bản đồ , bánh xe không khóa khi bạn phanh gấp và cuối cùng bạn có nhiều khả năng tránh xa tai nạn xe hơi .

  • VB6 là di sản, đó là COBOL mới
  • .NET có khung tốt hơn
  • .NET có công cụ tốt hơn
  • .NET có hiệu suất tốt hơn
  • .NET có IDE tốt hơn
  • .NET có hỗ trợ ngôn ngữ tốt hơn
  • .NET có các tính năng tốt hơn
  • .NET có sự hỗ trợ cộng đồng tốt hơn

7
Tương tự xe thường thất bại, và của bạn là không khác nhau. Một điều mà một chiếc xe cũ có một chiếc xe mới không phải là nó được trả tiền! Nếu bạn sở hữu một chiếc taxi và nó được trả tiền và nó giúp bạn kiếm được nhiều tiền hơn chi phí để duy trì, và một chiếc xe mới sẽ khiến bạn phải trả nhiều tiền hơn so với việc bạn làm như một người kinh doanh?

2
@JarrodRoberson Được trả tiền, nhưng họ có xu hướng giảm tốc thường xuyên hơn và sau một thời gian sẽ không còn hoạt động. Tương tự xe là tuyệt vời. :)
Steven Jeuris

1
Trên thực tế, tương tự xe này là tốt. Ông chủ của OP có taxi đang diễn ra và OP nên xem xét điều đó trong khi tiếp cận anh ta. Một chuyển đổi đầy đủ không thể xảy ra trong một ngày, nhưng chúng ta hãy bắt đầu di chuyển các bit, thay đổi từng miếng một.
ZJR

1
Các chủ doanh nghiệp tự thiết kế và xây dựng này. Nó hầu như đã trả tiền cho chính nó nhiều lần và bảo trì dành cho tất cả các ý định và mục đích miễn phí vì chỉ có 3 nhà phát triển và anh ta là một trong số họ. Giống như tôi đã nói, tương tự xe hơi là khủng khiếp, điều này đặc biệt là như vậy và bạn đưa ra quan điểm của tôi cho tôi với các lập luận của bạn hoàn toàn không có cơ sở kinh doanh khôn ngoan. Phần mềm mới sẽ giúp anh ta có lợi nhuận nhỏ hơn nhiều so với năm trước và mất tiền trong một khoảng thời gian không xác định ở mức tồi tệ nhất.

2
Các ứng dụng không có sự hao mòn entropy như các vật phẩm thông thường, chúng cũng không bị teo một cách tự nhiên, vì vậy chúng không bị hao mòn , cũng không bị hỏng bất kể sử dụng như thế nào với các vật phẩm tương tự, đặc biệt là ô tô không áp dụng. Một ứng dụng sẽ chạy mãi mãi miễn là nó phục vụ mục đích của nó. Một công ty tôi làm việc vài năm trước có một máy dựa trên MS-DOS cũ điều khiển đầu đọc thẻ trên cửa. Ý tưởng rằng phần mềm bị hao mòn là ngớ ngẩn. Điều đó nói rằng một kết thúc tốt đẹp của kế hoạch cuộc sống nên luôn luôn được thực hiện. Ngay cả khi kế hoạch đó là không bao giờ viết lại phần mềm.

0

Trước hết tôi nghĩ bạn nên thay đổi câu hỏi (không phải trên stackexchange mà trong công ty của bạn). Đó không phải là lý do tại sao .Net tốt hơn VB6, nhưng giống như vì VB6 không còn được hỗ trợ nữa , đã đến lúc tiếp tục, nhưng để làm gì. Hỏi các bên liên quan công nghệ 'mới' đó là gì? Có lẽ nó không phải .Net.

Nhưng có vẻ như bạn cần phải chuyển sang một công nghệ mới có được một số mô hình và thực tiễn lập trình tốt tại chỗ. Câu trả lời cho phần thứ hai khó hơn nhiều. Bạn có thể phải làm điều đó trong phần nhỏ của ứng dụng và chứng minh rằng nó có giá trị trong khi đó là nó ổn định hơn, dễ bảo trì hơn, v.v.


-1

Nói với ông chủ của bạn để viết hai quảng cáo muốn. Một cho các nhà phát triển C #. Một cho các chuyên gia VB6. Đưa họ ra khỏi đó. So sánh kết quả.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.