어느 날 오후 VB6에 비해 .NET의 이점을 강조 할 수 있습니다. 어떻게해야합니까? [닫은]


9

우리 회사는 소규모 스물 엔지니어링 회사입니다. 여기의 모든 응용 프로그램 프로그래밍은 지난 25 년 이상 이곳에서 일하면서 어셈블리 배경에서 VB6을 스스로 가르쳐 온 두 사람이 VB6에서 수행합니다.

결과적으로 VB6 코드는 수많은 문자열 형식 변수, 엄청나게 긴 함수, 수백 개의 공개 전역 변수 (일부는 인수를 전달하고 값을 반환하는 것보다 선호 됨)와 같은 끔찍한 코드 냄새로 가득 차 있습니다. 수업. 리팩토링은 거의 불가능하며 모든 변경 사항은 코드를 통해 너무 많은 파기를 필요로하며 한 번 만든 후에는 항상 더 많은 구멍을내는 것처럼 보입니다.

상사는 VB6이 죽은 기술임을 깨닫고 있으며 새로운 개발을 위해 .NET으로 이동하는 기쁨을 기꺼이 듣고 있습니다. 우리는 .NET으로 나아가고 있지만 더 나은 코드를 작성하는 방법이 아니라 최신 Windows OS와의 호환성을 유지하는 방법으로보고 있습니다.

VB6에 비해 .NET 언어의 장점을 어떻게 최신 상태로 설명 할 수 있습니까? .NET으로의 전환은 좋은 움직임 이지만 현재 프로그래밍 패러다임도 변화하기 시작해야한다는 것을 가장 잘 강조 할 수있는 것은 무엇입니까 ? 상사가 Visual Basic .NET이 VB6처럼 보인다는 것을 알게 되 자마자 그의 첫 번째 본능은 단순히 기존 코드 엉망을 .NET으로 변환하는 것입니다.

나는 오후에 다른 사람의 사고 방식을 바꿀 수 없다는 것을 이해하지만, 강렬한 유형의 변수, 사용자 정의 클래스 및 개인 분야와 같은 것들이 시간 낭비 가 아니라는 것을 어셈블리 토킹 보스에게 어떻게 확신시킬 수 있습니까? 에너지?


4
VB6 개발자는 죽어가는 품종입니까? .NET 개발자 및 VB6 개발자를 모집하십시오. 각 CV 수를 확인하십시오. 기존의 2 개의 타이머가 일단 폐기되면 대체품 (또는 매우 비싼 대체품)이 충분하지 않다는 사실만으로 충분합니다.
Oded

3
그가 노력할 수 있다는 것에 감사 하지만 대부분의 자존심있는 개발자는 죽은 언어를 피할 것입니다. MS가 VB6 지원을 중단 할시기는 확실하지 않지만 리소스를 찾는 것이 점점 어려워지고 있습니다 (제품 수명 종료는 VB6에 대한 또 다른 논쟁입니다). 이것이 얼마나 도움이 될지 모르지만 연구하십시오. msdn.microsoft.com/en-us/vstudio/ms788708.aspx-2008 은 IDE의 수명이 다했습니다. 그리고 "Microsoft에서 제공하는 사용자 지정 지원 계약"이 마음
Oded

1
@Oded 불행히도, VB.NET이 VB6, 전역 공용 변수 및 모두에 대한 스탠드 인으로서 사용할 수 있다는 사실에 대해 이러한 주장 중 어느 것도 실제로 다루지 않습니다. .NET을 사용하면 실제로 모든 이점을 어떻게 사용합니까?
dlras2

1
예를 들어 설명해보십시오. VB .NET에서 해결하기가 더 어려운 VB6에서 해결하기 어려운 문제가 있습니까? 코드베이스에서 몇 가지 예를 선택하고 VB6의 기능으로는 불가능한 .NET에서 더 나은 코드로 정리하는 방법을 보여줄 수 있습니까?
FrustratedWithFormsDesigner

1
@DanRasmussen VB.NET이 VB6 프로젝트를 올바르게 가져올 수 없습니다 (아직 수정 되었습니까?). 업그레이드는 쉽지 않습니다.

답변:


16

짧은 답변 : 질문에 나열된 모든 기술적 인 기준에 따라 마음을 바꾸는 방법은 없습니다 . 이것은 종교 토론에 해당합니다. 실패로가는 가장 빠른 길은 청중 (이 경우 비즈니스 소유자) 의 관점에서 있지 않은 주장을 제시하는 것입니다 .

더 긴 답변 : 비즈니스 변화는 한 가지 일에 의해서만 발생합니다. 결론적으로 이익을 얻습니다.

... 강력한 유형의 변수, 사용자 정의 클래스 및 개인 필드와 같은 것이 총 시간과 에너지 낭비가 아니라는 것을 어셈블리 토킹 보스에게 어떻게 확신시킬 수 있습니까?

그것들은 시간과 에너지를 낭비 할뿐만 아니라 더 중요한 것은 당신에게 돈이 든다는 것입니다 ! 귀하의 제안이 시간이 지남 에 따라 실질적인 이익 으로 이어질 것임을 정량적으로 보여줄 수 있어야합니다 . 그냥 주장 깨끗한 코드하는 것입니다 "더 나은" 때문에 충분하지 않습니다 깨끗한 코드가 생산에 더 많은 방법을 비용이 든다.

현대 기술을 사용하여 비용이 어떻게 발생하는지 명확하게 설명 할 수 있다면 사소한 우편 번호 는 ($COST + X) * TIME = $PROFIT어디에 있고 상대적으로 짧습니다. 매력적인 시나리오를 만들 수 있습니다.XTIME

ROI를 계산하는 또 다른 방법 (Return On Investment)

ROI 포뮬러

ROI / ROR 이 특히 오랜 기간에 걸쳐 사소한 숫자이면 비즈니스 사례가 많지 않습니다.

귀사는 실제로 어떻게 돈을 벌고 있습니까?

몇 줄의 코드? 얼마나 많은 고객? 이 소프트웨어는 1 년에 얼마나 많은 수익을 창출합니까? 수익이 주로 계약을 지원합니까? 아니면 새로운 라이센스? 목표 시장은 안정적입니까? 확장? 계약? 소프트웨어가 훨씬 더 수익성이 높은 다른 제품의 손실 리더입니까?

훌륭한 사업가가 테이블 위에 놓인 돈을 무시하는 것은 어렵습니다.

물론 당신은 당신의 진술을 어려운 사실로 뒷받침 할 수 있어야합니다. 즉, 학문적 기술적 세부 사항뿐만 아니라 실제 비즈니스를 실제로 이해하는 실제 숫자를 제공 할 수 있어야합니다.

전문가뿐만 아니라

또한 자세한 위험 분석과 이러한 위험이 $COST발생했을 경우 어떻게 될지를 제공하면 현실적인 사례가 있으며 더 이상 VB6을하고 싶지 않다는 사실을 확신하지는 않습니다.

오래된 개에게 새로운 트릭을 가르치기

... 현재 프로그래밍 패러다임이 변경되기 시작하는 경우에만 .NET으로의 전환이 좋은 움직임이라고 가장 잘 말할 수있는 것은 무엇입니까? ...

새로운 기술에서 가능한 한 관용적이되도록 프로그래밍 패러다임을 변경하는 것은 위험 분석의 일부입니다. 그러나 이것은 당신이 처음부터 변화를 통해 상당한 돈을 벌 수 있다는 것을 입증 한 후에야 별도의 주장 입니다.

비즈니스 사람들은 기술적 인 사람들이 기술적 인 사례를 듣는 것처럼 비즈니스 사례를 듣는 경향이 있습니다. 귀하의 질문에있는 모든 사례는 귀하의 상황에서 가장 학업 적 인 기술적 장점을 설득력있게합니다.

예측

나는 여기에 몇 가지 가정을하고 있습니다 .VB6 앱, 작은 상점, 소수의 개발자, 2 명의 오래된 개발자 / 비즈니스 소유자는 아마도 성숙하고 (버그 및 해결 방법이 알려져 있음) 틈새 시장 앱을 가리키고 있습니다. 코드베이스 의 "메스" 중 하나입니다. 이로 인해 소규모 사용자 기반이 해마다 크게 증가하지 않는다고 믿게되어 다음과 같은 결론으로 ​​이어집니다.

이 응용 프로그램으로 기술적 방향을 바꾸어야 할 실질적인 사업상의 이유는 없을 것입니다. 그리고 VB.Net으로 포팅 하는 것은 시간 낭비입니다. 이제는 혼란 스러울 것이지만 이제는 더 많은 것을 배우게되며 개발 팀의 2/3는 새로운 것을 배우는 데 전념하지 않기 때문입니다. 행운을 빕니다.


2
불행히도 재 작성 비용 (교육 추가 및 전문 지식 획득)은 대개 단기 및 중기 적으로 앱을 실행하는 데 드는 비용보다 높습니다. 그러나 장기적으로는 $ next_new_technology에서 재 작성 자체를 재 작성해야 할 위험이 있습니다.
gbjbaanb

4
종교 토론 +1 OP가 .NET에서 일하기를 원한다면 .NET 상점에서 일자리를 얻어야합니다. 이 회사에서 VB6에서 .NET으로 전환하는 것은 의심 할만한 이점이있는 주요 위험이라고 말합니다.
커크 브로드 허스트

"리팩토링은 거의 불가능하며, 코드를 통해 너무 많은 파고를 변경해야하고, 일단 만들어진 후에는 항상 더 많은 구멍이 생길 것 같습니다." 비즈니스에 가치가있는 마지막 진술입니다. 비즈니스 비용을 대폭 증가시키지 않으면 서 코드베이스를 변경할 수 없음을 증명하는 것은 귀하의 답변과 일치하는 매우 유효한 주장입니다. 물론, 그 진술을 뒷받침하기 위해 지표가 있어야합니다.

@ GlenH7 개인적으로 나는 당신이 인용하는 것이 극적인 개인적 의견과 수사적 이라고 생각합니다. 저의 대답은 그들이 변화를위한 실제 동인이 무엇인지 고려하지 않고 그들이 생각하거나 고려한 것이 아니라고 제안하는 것입니다. 내 요점은 "비싼" 장기적인 점진적인 변화 가 항상 같은 시간 동안 제안하는 보다 저렴 하다는 것입니다. 그들이 말한 것을, 그리고 당신이 말할 수없는 비즈니스 논쟁을 인용하십시오.

성명서에는 어느 정도의 수사가 있다고 동의했습니다. 일부 상점 (및 일반적으로 작은 상점은 아님)은 실패 / 탈출을 추적하므로 버그에 대한 하드 메트릭을 생성 할 수 있습니다. OTOH, 대부분의 상점은 그 정보를 보관하지 않으며 비즈니스 프레젠테이션에서 그다지 중요하지 않은 "직감"에 지나지 않습니다.

11

주력 제품이 VB6로 작성되어 3 명이 유지 관리하는 고객이 있습니다. 나는 그들이 웹 서비스를 호출하기를 원하는 파트너가 있었기 때문에 그들을 돕기 위해왔다. VB6에서는 매우 어렵지만 VB.NET 또는 C #에서는 쉽게 수행 할 수 있으며 VB6을 COM 구성 요소처럼 보이도록 호출하는 .NET 어셈블리를 작성했습니다. 그런 다음 누군가에게 웹 서비스를 제공해야했습니다. 그런 다음 작은 독립 실행 형 유틸리티를 작성하고 일부 정보를 암호화 및 암호 해독하고 일부 XML을 구문 분석해야했습니다. 나는 그것들을 .NET으로 작성하도록 가르쳤다. 지난 5 년 동안 주력 제품이 전혀 줄어들지 않았지만 점점 더 많은 코드가 .NET에 있습니다. 그들이 싫어하는 부분이 있습니다-모든 앱에는 있고-그들이 어디에서 이러한 부분을 꺼내고 (현재 축소 시작) 서비스 또는 별도의 유틸리티에 넣을 수 있습니다. 나머지는 holus-bolus를 .NET으로 변환합니다. 예, 잘못된 변수 이름과 모든 것-현재 프로그래밍 패러다임을 변경하지 않더라도 .NET으로 이동하면 많은 이점이 있습니다. 여기에는 다음이 포함됩니다.

  • 더 나은 검색, 더 나은 Intellisense, 더 빠른 빌드 등으로 최신 Visual Studio를 사용할 수 있습니다.
  • 적절한 소스 제어 시스템과 통합 할 수 있습니다 (예 : VSS 아님)
  • 암호화, XML 파싱, 이미지 처리 등과 같은 짧은 작업을 수행하는 .NET이 무료로 제공되는 라이브러리가 있습니다.
  • .NET 프로젝트에서 국제화 및 현지화가 훨씬 쉬워졌습니다 (프랑스어 및 영어 버전이 모두 필요한 캐나다 고객의 문의로 고객에게 균형을 맞출 수 있음)
  • 저렴한 제어 라이브러리 (Telerik, Infragistics, ComponentOne 등)는 거의 비용없이 놀라운 기능을 제공합니다
  • VB6를 가르치는 데 시간이 가치가없는 상황에서 여름 학생처럼 일시적인 도움을받는 것이 훨씬 쉬울 것입니다 (새로운 풀 타임 고용인에게 가르치는 것에 대해 어떻게 느끼는지 논의하지 마십시오)
  • 응용 프로그램은 UAC를 인식하므로 Vista, 7, 8에서 더 잘 실행됩니다. XP 호환성 모드에서 실행할 필요가 없습니다.

더 있지만 확실히 충분합니까?

프로그래밍 패러다임, 강력한 타이핑, 컴파일러는 친구이고 캡슐화는 친구입니다. 그 언덕에서 죽고 싶다면 VB6을 열어 놓고 죽어 가십시오.


마지막 단락은 무엇을 의미합니까?
dlras2

6
".NET으로의 이동"과 "모든 프로그램을 다른 방식으로합시다"는 점이 다르며, 두 번째 방법으로 싸울 경우 성공 가능성이 낮을뿐 아니라 거의 확실하게로 이동하지 않을 것입니다. 그 접근 방식의 NET. 나는 그들이 다른 방식으로 프로그램해야한다는 것에 동의한다. 그러나 .NET으로가는 가장 좋은 길은 "현재 가지고있는 것과 같지만 초콜릿 소스와 뿌린 것입니다!"
Kate Gregory

다른 문제로 접근하는 이점을 이해하지만 문제는 별도의 문제로 접근하면 .NET에서 동일하게 유지 관리 할 수없는 프로그램을 보장한다는 것입니다.
dlras2

1
다른 방법으로 수행 할 수 있고 변화의 고통이 가치가있는 개발자와 함께 더 나은 응용 프로그램 (더 나은 제어 기능, 더 많은 기능) 및 더 나은 프로세스 (소스 제어에서 몰래 작업 항목 추적까지 가능)를 갖게됩니다. 이 큰 혜택 때문에. 그들은 당신이 그들에게 요구하는 다음 일을 더 잘 받아 들일 것입니다. "유지 불가능"은 이진이 아닙니다. 코드는 훌륭하지 않지만 상황은 여전히 ​​낫습니다. 당신은 또한 신뢰성을 증명할 것입니다.
Kate Gregory

8

몇 년 전에 VB6 프로젝트 (회사의 사용자 지정 ERP 시스템)로 시작했으며 천천히 .NET으로 마이그레이션했습니다. 거의 반쯤 끝났습니다.

우선, VB6에서 VB.Net으로 변환하는 것은 거의 항상 나쁜 생각입니다 (그리고 나는 그것에 대해 많은 연구를했습니다). 너무 많이 다릅니다. 또한, 상사가 VB.Net이 "VB6과 같다"고 생각하면 그는 완전히 착각 한 것이므로 그의 전망을 빠르게 바꿔야합니다.

내 전략은 두 코드베이스를 별도로 유지하고 별도로 유지 관리 한 다음 전체 모듈을 VB6에서 .NET으로 천천히 옮기는 것이지만 해당 모듈에 중대한 변화가있을 때만 일부 비용을 상각 할 수있었습니다. 그럼에도 불구하고 재 작성은 비용이 많이 들고 위험한 작업입니다.

기존 VB6을 새로운 .NET 코드와 통합하는 두 가지 방법이 있습니다 (아마도 오랫동안 그렇게 할 수 있으므로 아이디어에 익숙해 질 수 있습니다). 첫 번째 방법은 .NET에서 작은 모듈 작성을 시작한 다음 주 VB6 응용 프로그램에서 일부 명령 줄 매개 변수를 전달하는 .NET 실행 파일을 시작하도록하는 것입니다. 이것은 효과가 있었지만 .NET의 시작 시간은 4-10 초입니다. 따라서이 방법으로 수행 할 수있는 작업이 제한됩니다.

실제로 고통스러워지기 시작하면 전략을 뒤집어이 CodeProject 기사의 방법을 사용 하여 기본 .NET 응용 프로그램에 기존 VB6 양식을 표시했습니다. 이 경로를 따라 가면 .NET 시작 시간이 한 번만 발생하고 ClickOnce를 사용하여 배포했습니다. 이는 VB6 앱이 이전에 배포 된 방식과 비교하여 신의 선물이었습니다.

VB6보다 .NET에서 찾은 장점은 다음과 같습니다.

  • 더 나은 지속성 프레임 워크 (NHibernate, EntityFramework, Linq2Sql 등)
  • LINQ (이것이 얼마나 중요한지 충분히 강조 할 수 없습니다)
  • 제네릭!
  • 람다 구문
  • 유사하게 Action그리고 Func유형
  • 반사 (당신이 거의 사용하지 않지만, 그렇게 할 때 거대한 것)
  • 훨씬 더 나은 단위 테스트 지원 (물론 다른 직원들이 단위 테스트를하도록 설득 할 수는 없지만 의심해야합니다)
  • ReSharper (및 기타 리팩토링 / 프로파일 링 도구) (MZ-Tools보다 10 배 우수)
  • ClickOnce 및 / 또는 설정 / 설치 프로그램 프로젝트
  • Windows 서비스 프로젝트
  • 진정한 객체 지향 지원 (VB6은 COM을 기반으로하며이 부서에서는 실제로 나쁩니다.)
  • 정적 타이핑
  • XML 지원에 구워
  • WPF 및 Windows Forms (VB6의 컨트롤이 매우 제한적 임)
  • WCF
  • 훨씬 더 많은 예제 코드 온라인
  • 예외 (VB6의 오류 처리는 비교에 의해 절대적으로 끔찍합니다)
  • Visual Studio의 소스 제어 통합
  • Decimal type (VB6에는 CDec가 있지만 첫 번째 클래스 십진 유형이 없었습니다)
  • 일등석 지원 Guid
  • 64 비트 정수에 대한 일급 지원
  • 더 나은 컬렉션 라이브러리
  • ReportViewer
  • 멀티 스레딩, 작업 병렬 라이브러리

VB6의 단점 :

  • 당신은 성능을 알 수 있습니다. 걱정하는 것만으로는 충분하지 않지만 나를 믿으십시오. VB6는 결국 네이티브 코드로 컴파일합니다.

공평하게 말하면, 결합 된 VB6 / .NET 솔루션을 유지 관리하는 데있어 몇 가지 단점이 있습니다.

  • 두 개의 데이터 액세스 계층 유지 (VB6 앱에 실제로 하나가 있다고 가정)
  • 서비스 / 양식 등을 노출시키기위한 추가 배선 한쪽에서 다른쪽으로
  • 머리에 두는 복잡성 / 아키텍처의 두 배

이제 암시했듯이 .NET에서 코드 작성을 시작하면 아키텍처를 처음부터 다시 작성해야합니다. 그러나 대기업 프레임 워크에 공통적 인 많은 패턴과 관행이있는 .NET 및 / 또는 Java 프로그래밍 세계에 익숙한 회사 직원이없는 것 같습니다.

양식에서 버튼을 드래그하는 데 익숙한 사람을 두 번 클릭하고 클릭 이벤트 핸들러에서 직접 SQL 문자열을 작성하는 경우 누군가를 위해 노력하고 있다면 실제로 SOLID를 따르는 것이 유리합니다. 설계 원칙. 다른 한편으로, 총알을 물고 자동화 된 단위 테스트를 통해 모든 새로운 코드가 90 % 이상 적용된다고 결정하면 SOLID 설계 원칙을 채택하지 않는 한 이것이 실제로 어렵다는 것을 빨리 알게 될 것입니다.

따라서 상황의 현실을 정말 열심히 살펴 봐야합니다. 필자의 경우, 나는 유일한 프로그래머였으며 경험이 없어도 모든 새로운 코드를 단위로 테스트하기로 결정했습니다. 나는 이것이 첫 주, 심지어 첫 달에 할 수있는 일에 부정적인 영향을 미쳤음을 충분히 강조 할 수 없다. 그래도 나는 그렇게하기로 결심했고 경영진으로부터 바이 인을 받았습니다. 대부분의 사람들에게는 그런 사치가 없습니다. 이제 코드가 많았으며 거의 ​​문제없이 주요 리팩토링을 마쳤습니다.

현실적으로, 당신은 단위 테스트를하지 않을 것입니다. 이는 팀원들에게 의존성 주입과 같은 원칙을 정당화하기가 더 어렵다는 것을 의미합니다. 아키텍처상의 이점 이외 의 장점으로 .NET을 판매해야합니다 . 더 나은 라이브러리 지원과 더 나은 도구에 중점을 두어야합니다. 그것이 공명 할 유일한 것입니다. 데모에서 다음을 제안합니다.

  • Windows Forms 프로젝트 만들기 (WPF 및 xaml을 피하십시오-너무 놀랍습니다)
  • SQL 데이터베이스 (일부 테스트 데이터베이스)에 연결
  • Linq2Sql 또는 EntityFramework를 사용하여 데이터 모델 생성
  • 엔티티 목록을 리턴하는 메소드가있는 저장소 클래스 작성
  • linq를 사용하여 해당 방법으로 쿼리를 작성하고 지능을 지적하십시오.
  • linq는 엔티티뿐만 아니라 모든 객체에서 작동합니다.
  • 데이터베이스를 변경하고 모델을 재생성하면 컴파일 오류가 발생 함을 보여줍니다.
  • 드롭 DataGridView메인 창에
  • 리포지토리의 엔터티로 그리드를 채워 데이터 바인딩을 보여줍니다.
  • VB6보다 훨씬 나은 그리드에 대한 모든 멋진 점을 지적하십시오.
  • .rdlc 파일 만들기 (보고서)
  • Visual Studio 내에서 간단한 보고서 작성
  • 창에 보고서 뷰어를 놓고 보고서 뷰어 내부에 보고서를 렌더링하십시오.
  • (분명히 ReportViewer가 설치되어 있어야 하며이 모든 것을 먼저 연습해야합니다)
  • "중간에 구멍"문제가 발생 Action하면 매개 변수로 사용하는 메소드를 작성하여이를 해결하십시오 . 다른 방법을 매개 변수로 전달하여 먼저이 작업을 수행 한 다음 람다 구문을 사용하여 익명 대리자를 전달하여 마음을 날려 버리십시오.
  • List<T>and Dictionary<T1,T2>컬렉션 클래스 를 사용하여 제네릭을 시연 하고 강력한 형식의 코드를 만드는 방법을 보여줍니다 (VB6에는 비슷한 내용이 있지만 동적으로 형식화 됨)
  • foreach당황스럽게 평행 한 루프를 작성하고 , System.Diagnostics.Stopwatch실행하는 데 걸리는 시간을 측정하는 데 사용하고, 태스크 병렬 라이브러리를 사용하여 루프를 루프로 변경 Parallel.Foreach하고 속도 향상을 보여줍니다 (멀티 코어 머신 인 경우).
  • 전역 예외 처리기를 추가하는 기능을 시연합니다 (VB6에서는 수행 할 수없는 기능 임)

그게 내가 할 것입니다.


1

이것은 당신이 프로그래밍 모자 대신 정치인 모자를 착용 해야하는 상황이라고 생각합니다. 당신은 당신의 주장을하는 방법에주의를 기울여야하며 청중을 길들여주지 않아야합니다. VB의 단점을 보여주는 대신 .Net의 장점을 보여주십시오. VB의 단점을 주장하면 동료들은 자신의 결정을 방어하고 그들이 많은 투자를 한 언어가 나쁜 언어임을 인정해야하는 위치에있게됩니다. 대신, .NET으로 이전 할 때 사용 가능한 도구가 어떻게 향상되고 더 쉽게 생활 할 수 있는지 보여주십시오.

이 주장을하는 나의 이상적인 방법은 모든 사람이 끊임없이 불평하는 작업이나 코드를 찾아서 .NET을 사용하여 수정하는 것입니다. VB에 익숙하지는 않지만 VB 대신 .NET을 사용하면 쉽게 할 수있는 성가신 작업 목록이 있습니다.

  • 문자열 조작
  • XML 파싱
  • 검색 / 일치 / 정규
  • 수학 (일반적으로 새로운 언어에는 더 빠르고 포괄적 인 수학 라이브러리가 있음)
  • GUI 구축 / 디자인

위의 작업 중 하나 또는 일반적으로 작업하는 프로젝트와 관련된 다른 작업 중 하나를 선택하고 문제와 함께 앉아서 실제로 문제를 빠르고 쉽게 처리하는 코드를 처음부터 작성하십시오. 실제로 코드를 작성하는 과정을 보여 주면 최신 버전의 VS가 테이블에 가져 오는 도구를 보여주고 .NET으로 이동해도 다른 사람의 삶을 어렵게 만들지 않는다는 증거를 제공합니다.

이것에 들어가면 절대적으로 긍정적으로 숙제해야합니다. 도구의 작동 방식이 확실하지 않거나 올바르게 작동하지 않는 코드가있는 경우 절대로 도구를 이길 수 없습니다.


0

가장 먼저 말하는 것은 VB6이 더 이상 Microsoft에서 지원되지 않는다는 것입니다. 계속 실행할 수는 있지만 장기적으로 옵션을 이해해야합니다. VB6 앱이 Windows8에서 실행되는지 IDE 자체가 Win8에서 실행되는지는 알지 못합니다.

따라서 결국 재 작성을 효과적으로 수행해야하며,이 경우 나중에 시작하는 것이 아니라 나중에 시작할 수도 있으므로 사용하려는 새로운 기술을 파악할 충분한 시간을 제공 할 수 있습니다 (VB.NET은 이상적이지만 앱이 iPad에서 작동하도록하는 등보다 최신의 것을 시도 할 수있는 기회입니다.

단기적으로는 기존 앱의 COM 구성 요소로 새 섹션을 도입하여 문제를 약간 완화 할 수 있습니다. 이러한 구성 요소는 불가피한 다시 쓰기가 발생할 때 그대로 유지되기를 바랍니다.

.NET이 VB6보다 나은 이유에 대한 기술적 인 주장에 신경 쓰지 않을 것입니다. 기술 자체는 결코 문제를 해결 하지 못합니다 . 해당 기술을 적용하는 방법은 VB6 앱이 문제를 해결하는 데 달려 있습니다. 유지 보수의 용이성 또는 숙련 된 직원의 가용성에 대해 이야기 할 수 있지만 일단 그렇게하면 기존 직원이 새로운 기술에 대한 전문 지식이없고 훈련을 받아야한다는 사실을 인정한 다음 완전히 시간을 내기 위해 약간의 시간이 걸립니다 그것으로. 또한 많은 재 작성이 원래 프로젝트보다 어떻게 나빠지는지에 대한 질문에 답해야합니다.


MS는 Windows 8을 실행하는 Intel / AMD PC에서 VB6을 지원할 예정입니다. VB6에서는 Metro 앱을 작성할 수 없지만 .NET에서는 Metro 앱을 작성할 수 없습니다. 둘 다 Win32를 기반으로합니다. .NET 용 C #으로 작성된 적어도 코드에있다 생각 지하철에서 실행하지만, 간단한 재 구축되고 거기에 포함되지 않습니다 WinRT에 포트에 쉽게 될 수 있습니다.
Scott Whitlock

0

그에게 "오래된 새 차 대 차"를 비유하십시오.

예, 둘 다 목적지에 도착할 것입니다. 그러나 새 차에는 크랭크 가 필요하지 않으며, 질식 이 필요없고 , 지도 가 필요하지 않으며 , 급격히 브레이크를 밟을 때 바퀴가 잠기지 않으며 , 결국 자동차 사고에서 벗어날 가능성이 훨씬 높습니다 .

  • VB6은 레거시, 새로운 COBOL
  • .NET은 더 나은 프레임 워크를 가지고 있습니다
  • .NET은 더 나은 툴링을 제공합니다
  • .NET의 성능이 향상되었습니다
  • .NET은 더 나은 IDE를 가지고 있습니다
  • .NET은 더 나은 언어 지원을 제공합니다
  • .NET은 더 나은 기능을 가지고 있습니다
  • .NET은 더 나은 커뮤니티 지원을 제공합니다

7
자동차 유추는 일반적으로 실패하며 귀하의 차이는 없습니다. 일는 것을 오래된 차 것을 신차는 그 지불입니다하지 않습니다! 택시를 소유하고 택시를 냈는데 비용이 많이 들었고 유지비보다 더 많은 돈을 벌고 있다면 새 차를 구입하는 것보다 더 많은 돈을 지불해야 합니까?

2
@JarrodRoberson 비용이 많이 들지만 더 자주 브레이크 다운되는 경향이 있으며 잠시 후 더 이상 작동하지 않습니다. 자동차 유추는 훌륭합니다. :)
Steven Jeuris

1
실제로,이 차 비유는 좋습니다. OP의 사장님은 그 택시가 계속 운행하고 있으며 OP는 그에게 다가가는 동안 그 점을 고려해야합니다. 풀 스위치는 하루 동안 일어날 수 없지만 비트를 이동하고 조각을 하나씩 바꾸면서 시작합시다.
ZJR

1
사업주가 직접 설계하고 건설 했습니다. 그것은 많은 시간 동안 그 자체로 비용을 지불했을 것입니다. 유지 보수는 개발자가 3 명 뿐이며 그 중 하나이기 때문에 모든 의도와 목적을 위해 무료입니다. 내가 말했듯이, 자동차 유추는 끔찍합니다. 이것은 특히 그렇습니다. 그리고 당신은 기본 비즈니스 측면에서 완전히 벗어난 당신의 주장으로 나를 지적합니다. 새로운 소프트웨어를 사용하면 매년 최고의 수익을 낼 수 있으며 최악의 기간 동안 불확실한 시간 동안 돈을 잃게됩니다.

2
응용 프로그램은 전혀 없다 마모 엔트로피를 물리적 항목처럼 그들이하지 않도록 그들은 자연적 위축하지 않는, 마모 ,도 아니다 않는다 분해 물리적 항목 비유는, 특히 자동차가 적용되지 않도록 관계없이 사용. 응용 프로그램은 목적에 부합하는 한 영원히 실행됩니다. 내가 몇 년 전에 일한 한 회사에는 출입문의 카드 판독기를 제어하는 ​​오래된 MS-DOS 기반 시스템이있었습니다. 소프트웨어가 마모된다는 생각은 어리 석습니다. 그것은 좋은 삶의 끝 계획 이 항상 있어야한다고 말했다 . 그 계획이 소프트웨어를 다시 작성하지 않더라도.

0

먼저 질문을 변경해야한다고 생각합니다 (스택 교환이 아니라 회사 내). VB6보다 .Net이 더 좋은 이유는별로 없지만 VB6이 더 이상 지원 되지 않기 때문에 앞으로 나아갈 시간입니다. 이해 관계자들에게 그 '새로운'기술이 무엇이어야합니까? .Net이 아닐 수도 있습니다.

당신이 새로운 기술로 이동해야처럼하지만 소리 장소에서 좋은 프로그래밍 패턴과 관행을 얻을. 두 번째 부분에 대한 대답은 훨씬 어렵습니다. 아마도 응용 프로그램의 작은 섹션에서 수행해야하며 가치가 있음을 증명해야합니다. 즉, 더 안정적이며 유지 관리하기 쉽습니다.


-1

상사에게 두 개의 원하는 광고를 작성하도록 지시하십시오. C # 개발자를위한 것입니다. VB6 전문가를위한 것입니다. 거기 밖으로 넣어 결과를 비교하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.