2009-07-04 45 views
6

Đối với tôi, việc phát triển hệ sinh thái Java đã trả các hóa đơn trong nhiều năm. Tuy nhiên, trong nhiều năm nay, tôi đã làm việc chủ yếu trong không gian .Net. Ban đầu, quá trình chuyển đổi của tôi sang thế giới .Net bao gồm việc viết và duy trì mã VB.Net. VS cung cấp gần như tất cả các hỗ trợ intellisense tốt đẹp mà tôi mong đợi sau nhiều năm làm việc với combo Eclipse/Java. Cuối cùng, chủ lao động của tôi quyết định làm phát triển mới trong C#. Ấn tượng ban đầu của tôi về sự hỗ trợ intellisense cho C# ít hơn sao. Đôi khi có vẻ như VS không có trình biên dịch nền cho C#, nhưng đôi khi nó làm một cái gì đó thông minh, cho thấy có một số xử lý nền ở đó, nhưng không đủ để thực sự tăng năng suất theo những cách có ý nghĩa. Có bất kỳ lý do kỹ thuật lành mạnh nào cho sự khác biệt này về hỗ trợ intellisense giữa hai ngôn ngữ không?Tại sao hỗ trợ IntelliSense cho C# thiếu khi so sánh với VB.NET?

+2

Những trục trặc duy nhất tôi thấy là C# là một ngôn ngữ nhạy cảm, vì vậy đôi khi tôi không kích hoạt nó đúng cách. Bạn có thể đăng một ví dụ về ý của bạn? – Eric

+2

Đó là tất cả về VB.NET có biên dịch nền từ đầu. –

+1

Cập nhật Intellisense của C# sau khi chỉnh sửa mã nguồn, ngay cả trước khi xây dựng/biên dịch lại; đó là lý do tại sao tôi tự hỏi liệu máy tính của OP chỉ đơn giản là chậm vì một lý do nào đó. – ChrisW

Trả lời

14

Đã có khoảng cách giữa C# và VB trong một thời gian. VB tạo ra rất nhiều mã cho bạn. Ví dụ, nhấn Enter sau khi kết thúc câu lệnh "If" sẽ tự động thêm "Sau đó" ở cuối dòng đó nếu bạn rời khỏi nó, và đóng nó với phần "End If". Trong C#, bạn có thể thêm các dấu ngoặc nhọn bắt đầu và đóng {} đó.

VB đã có quá trình biên dịch nền trước C#. Trong thực tế, đó là một trong những yếu tố hấp dẫn chính của việc sử dụng ReSharper, cung cấp chức năng như vậy. Tuy nhiên, kể từ VS 2008/.NET 3.5 SP1, tất cả đã thay đổi. Bạn có thể đọc bài Scott Gu về here đó, nhưng tôi sẽ dán phần có liên quan:

"The C# code editor hiện xác định và hiển thị màu đỏ lỗi squiggle cho nhiều vấn đề mã ngữ nghĩa mà trước đây cần một rõ ràng Ví dụ: nếu bạn cố gắng khai báo và sử dụng loại không xác định trong Trình chỉnh sửa mã C# hôm nay, bạn sẽ không thấy lỗi biên dịch cho đến khi bạn xây dựng. sống màu đỏ lỗi squiggle ngay lập tức (không có yêu cầu biên dịch rõ ràng). "

Sử dụng CodeRush hoặc ReSharper chắc chắn sẽ nâng cao trải nghiệm với việc tự động hoàn thành các câu lệnh phổ biến khiến nhà phát triển VB cảm thấy như đã có chuyển đổi liền mạch.

Điều đó không hoàn toàn giải quyết các vấn đề kỹ thuật, nhưng các nhóm phát triển khác nhau và không nhất thiết phải làm điều tương tự. Nói cách khác, không có khả năng là một cách tiếp cận được chia sẻ. This blog post trích, bởi một lãnh đạo kỹ thuật trong nhóm VB, hỗ trợ này:

“Bối cảnh biên soạn” là tính năng trong VB cung cấp cho bạn một bộ hoàn chỉnh lỗi khi bạn gõ. Những người di chuyển qua lại giữa VB và C# nhận thấy điều này, nhưng VB chỉ nhà phát triển có thể không nhận ra rằng các ngôn ngữ khác như C# không phải lúc nào cũng cung cấp cho số điện thoại 100% Intellisense và . tất cả các lỗi tồn tại trong mã của bạn. Đây là là vì động cơ Intellisense của chúng là các trình biên dịch riêng lẻ, được thu nhỏ lại không biên dịch hoàn toàn trong nền .VB, mặt khác, biên dịch toàn bộ dự án của bạn từ đầu đến cuối như Visual Studio ngồi nhàn rỗi, cho phép chúng tôi ngay lập tức cư danh sách công việc với hoàn toàn lỗi chính xác và cho phép chúng tôi cung cấp cho bạn hoàn toàn chính xác Intellisense.

Một lưu ý cuối cùng là recent Channel9 interview với Tập đoàn PM của C#/VB/F # đội, Luca Bolognese, nơi ông đã nhấn mạnh như thế nào các ngôn ngữ không còn đi lạc ra theo các hướng khác nhau và sẽ bắt đầu chia sẻ của họ điểm tương đồng. Vì vậy, có vẻ như tương lai nắm giữ những điều tuyệt vời!

+1

Có một giọng nói nhỏ trong một số khu vực nhỏ, tầm thường của bộ não của tôi nghĩ rằng đây là một ý tưởng tồi. Tại sao? Những ngôn ngữ này không giống với các lý do thực dụng. Họ nên được phép phát triển độc lập. –

+0

Tôi phải thừa nhận rằng tôi chưa đọc tất cả câu trả lời này, nhưng đoạn đầu tiên dường như không hoàn toàn chính xác. Bạn đề cập đến những gì cơ bản âm thanh như một đoạn mã cho một tuyên bố nếu trong VB - C# cũng có đoạn như thế này: Gõ "nếu" và nhấn tab để tạo ra toàn bộ khối. Có rất nhiều đoạn mã tương tự khác nữa. –

+1

Đáng buồn thay, tôi nghi ngờ đây là knell chết cho VB.Net. MS chuyển xuống trạng thái thứ hai/thứ ba. Tôi là một trường học cũ c/C++/java/C# (và unix guy) nhưng tôi nhận ra sau khi làm việc với VB.Net, rằng nó là một ngôn ngữ tốt chết tiệt và có một đại diện crap không được bảo vệ trong nhiều người trong cộng đồng lập trình. Tôi sẽ nhớ nó. –

Các vấn đề liên quan