최근 VB.NET 프로젝트에서 저는 C#에서 사용하는 명명 규칙을 채택했습니다. 즉, 변수를 참조하는 클래스와 동일한 이름으로 호출하는 경우가 종종 있습니다.VB.NET에서 Dim foo As Foo를 사용하는 데 문제가 있습니까?
Foo foo = new Foo(); // C#
Dim foo As New Foo() ' VB.NET
특히 작은 방법의 경우 코드를 작성하는 것이 가장 명확한 방법입니다. 이 코딩 스타일은 대소 문자를 구분하는 C#에서 잘 작동하며 Visual Studio에서 제공하는 구문 강조로 인해 클래스 이름과 변수 이름이 다른 것을 쉽게 볼 수 있습니다.
그러나 놀랍게도 VB.NET에서는 거의 100 %의 시간이 걸렸습니다. 유일한 문제는 변수 이름이 다중 ID를 사용하는 것처럼 보였습니다. 즉, 인스턴스 메소드와 Foo 클래스의 공유 (정적) 메소드를 호출하는 데 사용될 수 있습니다. 이것은 실제로 문제를 일으키지는 않았지만 Intellisense가 정적 및 인스턴스 메소드를 모두 포함하는 목록을 제공한다는 것을 의미했습니다. 변수 이름 뒤에.
놀랍게도 이것은 실제로 내 프로젝트에서 혼란을 일으키지 않았으며 지금까지 성공했습니다. 그러나 나는이 특별한 프로젝트에서 일하는 유일한 사람이었다. 여기
은 약간 더 예입니다Dim collection as Collection = New Collection()
For Each bar As Bar in Bar.All()
collection.SomeInstanceMethod(bar)
Next
collection.SomeSharedMethod()
* 나는이 발견 유일한 문제는 때때로 '이름 바꾸기'리팩토링 도구는 클래스 이름을 바꿀 때 즉, 그것은을 가진 변수의 이름을 바꿀 것 혼동하는 것이었고, 선언 선 (Dim foo As...
)에는 클래스와 동일한 이름이 있지만 해당 변수에 대한 다른 참조는 없으므로 컴파일러 문제 (duh)가 발생합니다. 이들은 항상 쉽게 고칠 수있었습니다.
또 다른 작은 성가심은 VB.NET 구문 형광펜이 변수 이름보다 다른 클래스 이름을 강조 표시하지 않으므로 C#에서 사용할 때만큼 멋지지 않습니다. 나는 여전히 매우 읽기 쉬운 코드를 발견했다.
다른 누구나 팀 환경에서 허용 했나요? VB.NET에서이 명명 규칙에 다른 잠재적 인 문제가 있습니까?
그건 내가 VB.NET을 좋아하지 않는 이유 중 하나이다. C# Foo와 foo는 분명히 다른 식별자이고 VB에서는 혼란 스럽다. –
그 이유 중 하나는 C#을 좋아하지 않는다. Thomas Levesque와 THOMAS LEVESQUE 그리고 thomas levesque 다른 사람들입니까? –
아니요, 다행히도 C# 코드는 전화 번호부에 직접 배치되지 않습니다. – recursive