문제

내가 준비하는 클래스에 Visual Basic2005 타겟팅 Visual Basic6 프로그래머의 마이그레이션을.NET 플랫폼입니다.

고 싶의 말씀에 대해 조언할지 여부를 좋습니다 그들은 항상 사용 엄격한 옵션 나지 않습니다.

일했으로 함께 스타일을 프로그래밍 언어,대부분 Java,C#,그래서 나를 위해 명시적으로 캐스팅 은 뭔가가 나는 항상 기대 내가 할 일 이후,그것은 없었습니다.
그러나 나의 가치를 인식하고 작업하는 언어가 내장되어에 대한 지원 늦은-바인딩, 기 때문에,하지 않게 명시적인 종류에 대해 코드에서 실제로 시간을 절약할 수 있습니다.이것은 추가에 의해 증명된 인의 확산 동적 입력한 언어, 도 있습니다.인터넷 플랫폼을 가진 동적인 언어 Runtime.

이 마음으로,한 사람이 다가오고 있습니다.NET 을 위한 첫 번째를 사용하여 시간 VB.NET 고 VB6 배경하는 것이 좋으로의 사고 방식 을 컴파일 시간 형식 검사 기 때문에"최상의 방법"CLR?거나"확인"을 계속 제공하는 혜택을 누리의 늦은-바인딩?

도움이 되었습니까?

해결책

예! 옵션 Strict는 .NET의 모범 사례입니다. .NET은 강력하게 입력 된 플랫폼의 핵심이며 DLR이 더 완전히 지원 될 때까지 핵심이 될 것입니다. 몇 가지 예외가 있습니다 Dim 그리고 Function 명시 적 유형이 있어야합니다. LINQ 또는 BOO 및 JSCRIPT와 같은 것은 규칙을 증명하는 예외입니다.

다음은 지적해야 할 다른 것들이 있습니다. 나는 당신 이이 모든 것을 잘 알고 있다고 확신하지만, 나는 이전 vb6ers가 작성한 많은 vb.net 코드와 함께 일하고 유지해야했기 때문에 이것은 나에게 아픈 곳입니다.

  • 이전 문자열 함수를 사용하지 마십시오. LEN(), REPLACE(), TRIM(), 등
  • 헝가리 사마귀는 더 이상 권장되지 않습니다. oMyObject 그리고 sMyString 코셔가 아닙니다. 그들에게 참조를 보여주십시오 Microsoft의 디자인 지침 그들이 당신을 믿지 않는다면.
  • 그들이 새로운 것에 대해 배우십시오 AndAlso/OrElse 논리 연산자
  • 매개 변수화 쿼리 및 최신 ADO.NET. 그것을 충분히 강조 할 수 없습니다. 그들은 결코 전화 할 필요가 없습니다 CreateObject() 다시.
  • 스코프는 VB6과는 다르게 작동하며 .NET에서 .NET에서 더 중요합니다. VB.net에는 여전히 모듈이 있지만 이제 정적 클래스와 더 유사합니다. VB6이 제공하는 부분 OOP 지원과는 달리 실제 객체 지향 환경에서 개발이 어떻게 다른지 이해하는 것이 중요합니다. 더 이상 방법이 불경건 한 길이로 실행할 수있는 이유는 없습니다.
  • 제네릭 및 인터페이스에 대한 소개를 받으십시오 (포함 IEnumeralbe(Of T)), 그리고 왜 그들이 절대 사용해서는 안되는지 알아보십시오. ArrayList 다시.

계속 갈 수는 있지만 그냥 당신을 가리킬게 vb.net의 숨겨진 기능 이 분노를 닫는 질문.

다른 팁

옵션 엄격한 활성화로 개발하는 데 소요되는 시간은 나중에 엄청난 디버깅 시간을 절약 할 수 있습니다.

Option Strict 분명히 대체할 수 없습니다 좋은 유닛 테스트–그러나 다른 방법으로 바라보고 있습니다.는 동안 단위 테스트 검색 같은 오류로 Option Strict, 이 의미 없다는 오류 단위 테스트,단위 테스트를 수행 종종 및 초기,등등....

쓰 좋은 장치 테스트에 없는 항상 사소한 그 시간이 걸립니다.그러나 컴파일러는 이미 중 일부를 구현하는 테스트–형태의 유형 확인합니다.적어도,이 시간을 절약할 수 있습니다.더 많은 가능성이 높장 많이 시간과 돈(적어도 가끔)기 때문에 당신의 테스트는 잘못된/지 모두 커버 케이스/잊을 계정 변경에서 코드입니다.

다음과 같이 요약할 수 있습니다,없는 것을 보장하는 단위 테스트는 올바른 있습니다.다른 한편으로는,이 강력한 보장을 하는 형식 검사를 수행하여 컴파일러가 올바른 또는 적어도 그 고장(선 배열을 분산 버그를 순환을 참조)를 잘 알려져 있고 잘 설명되어 있습니다.

다른 sum-up: Option Strict On 은 확실히 좋습니다. 사실 나는 일년 동안에 온라인 커뮤니티는 다음과 같이 하나입니다.때마다 누군가가 도움이 필요에는 코드를 분명히 있지 않았 Option Strict 사용 가능하게 설정되어 있을 거라고 정중하게 지적이고 거부하는 어떠한 추가 도움이 될 때까지 이 수정되었습니다.그것은 너무 많은 시간을 절약 할 수.자주 문제가 사라졌습니다.이것은 것과 비슷합을 사용하여 올바른 HTML 을 요청할 때에 도움이는 HTML 지원 포럼:잘못된 HTML 작동 수 있습니다,그러나,그것지 않을 수도 있습고의 원인이 될 문제입니다.따라서,많은 전문가 도움을 거부한다.

예!!!!

제 생각에는 개발자와 대학 강사로서 예.

처음부터 좋은 습관에 들어가는 것이 가장 좋습니다. 전체 프로세스를 훨씬 쉽게 만들고 옵션 Strict는 제 생각에 필요한 요소 중 하나입니다.

추가

그 이유에 대해 말 그대로 많은 이유가 있지만, 핵심은 그것이 모범 사례이며 새로운 언어를 가르 칠 때 처음부터 모범 사례를 가르치는 것이 중요합니다.

여기에는 두 가지 레벨이 있다는 것을 기억하십시오.

옵션 명시 적 옵션 엄격함

이 둘의 주요 차이점은 옵션 엄격한 vb의 다른 데이터 유형의 자동 변환을 비활성화한다는 것입니다. 변수를 다른 유형에 할당하려면 CTYPE 또는 다른 데이터 변환 기능을 명시 적으로 사용해야합니다.

나는 1.0 이후로 VB를 사용하고 있었고, 이것의 요점을 볼 수 있지만, 다른 인터페이스와 클래스를 구현하거나 상속 한 객체를 다룰 때 엄격한 사람들이 열성적으로 지나치게 부족하다고 생각합니다.

나는 처음에는 엄격한 것으로 시작하고 그것이 당신의 길로 시작되면 명시 적으로 떨어 뜨립니다. 그러나 둘 다 끄지 마십시오. 그런 식으로 광기와 과도한 디버깅 시간이 있습니다.

VB의 수년에 걸쳐 나는 모든 부동 소수점 변수에 거의 두 배를 사용합니다. 이렇게하면 반올림 및 정확도 손실에 많은 문제가 발생하지 않습니다. VB6에서 나는 32 비트 정수 인 한 오래 사용했지만 정수는 int32와 마찬가지로 .NET에서도 잘 작동합니다. 또한 Microsoft가 해당 키워드를 재정의하기로 결정한 경우 Integer, Long 등 대신 Int32, Int16 등을 사용하는 것이 좋습니다.

나는 동의하지 않을 것이다 RS Conley (매우 특이한). 내가 가장 좋아하는 vb6 전문가 -Francesco Balena, Dan Appleman- 모든 VB6의 자동 변환을 싫어했습니다. 안에 호의Option Strict .NET에서. 많은 숙련 된 VB6 프로그래머는 자동 변환을 "악한 유형 강요"로 알고 있습니다 (PDF), 그리고 전환을 기쁘게 생각합니다 Option Strict.

때때로 하나의 작은 모듈을 사용하지 않고 사용하는 것이 좋습니다. Option Strict, 복잡한 반사 코드를 피하기 위해. 그러나 그것은 규칙을 증명하는 예외입니다.

Boehm의 개발주기 초기에 문제를 해결하면 최소한의 리소스가 소비된다는 개념을 감안할 때, 개발자가 가능한 한 빨리 "올바르게"할 수 있도록 도와주는 모든 도구의 팬입니다. 이러한 이유로 저는 효율성 향상과주기 초기에 작업 코드를 구현하는 데 도움이되는 도구 인 Intellisense와 같은 것들을 옹호합니다. (작동하지만 그렇지 않습니다 반드시 옳은.)

이러한 이유로, 나는 또한 실수를 유지하는 방법과 그에 따른 수정 사항을 "설계 시간"에 깊이 빠뜨리는 데 도움이되는 옵션 사용을 지원합니다.

유형을 확인하는 데 익숙하다면 옵션을 엄격하게 원할 것입니다. 그것을 끄면 장점이있을 수 있지만, 뇌가 컴파일러가 일반적으로 불평하는 오류를 발견하도록 조정되지 않으면 그대로 두라고 말합니다. 나는 vb.net에서 많이 일했고, 옵션으로 작업하면서 대부분의 시간을 끄면서 켜지는 것을 보았을 때 많은 상황을 보았을 것입니다. 버그.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top