배경
작년에 저는 약 10 명의 사용자를위한 사업 계획에 사용할 도구를 만들라는 요청을 받았습니다. 이 작업은 저에게 "하청 계약"한 다른 IT 팀을 대신하여 이루어졌으며 프로젝트 마감일이 약간 계획되지 않았기 때문에 약간의 서두를 필요로했습니다.
당시 가장 빠른 방법은 VBA를 사용하여 Excel 통합 문서를 만든 다음 사용자가 인트라넷에서이 VBA 향상 통합 문서를 다운로드하여 PC에서 사용하도록하는 것입니다. 우리가 사용하는 계획 시스템 (예 : 데이터베이스)은 계획 통합 문서를 열 때 동시에로드되어야하는 Excel 추가 기능을 통해서만 상호 작용할 수 있기 때문에 Excel은 제약 조건이었습니다. 그러나 당시 VBA는 제약이 아니 었습니다.
약 4,000 줄의 VBA 코드를 만든 통합 문서에서 데이터와 프레젠테이션 계층을 분리하려고 시도했지만 프로젝트 마감일로 인해 모든 경우에 성공할 수는 없었습니다. 솔직히 말해서이 통합 문서를 만드는 것이 자랑 스럽지만 동시에 코딩 및 사용자 배포 측면에서 더 나아질 수 있다는 점에서 약간 실망했습니다.
오늘
오늘로 돌아가 IT 팀이 비슷한 통합 문서를 요청하기 위해 다시 왔지만 (위의 다른 통합 문서의 일부를 재사용 할 수 있음) 이번에는 훨씬 더 복잡하고 더 많은 사용자가 사용할 것입니다 ( 약 200).
그러나 이번에는 조금 더 나은 계획을 세웠으며 계획을 세울 시간이 조금 더 있음을 알 수 있습니다. 이를 바탕으로 100 명의 사용자를위한 프로그래밍이 10 명의 사용자보다 더 큰 영향을 미치기 때문에 솔루션과 인프라에 대해 생각했습니다. 따라서 팀에게보다 정교한 방식으로 코드를 관리 할 수 있도록 기존 코드를 C # 솔루션으로 마이그레이션하는 것이 좋습니다. VSTO / Excel-DNA를 사용하여 작성된 추가 기능으로 여전히 고려하고 있으며 사용자에게 배포 할 수 있습니다.
나는 2 주 전에 IT 팀 과이 문제를 논의했으며 어제까지 VBA 또는 C #을 모르는 팀 중 하나로부터 C # 에서이 새로운 프로젝트를 시작 해야하는 이유와 이전과 같은 접근 방식. 그들의 우려 중 일부는 다음과 같습니다.
- C # 솔루션은 기존 VBA 기반 솔루션만큼 안정적이거나 작동하지 않을 것이므로 상당히 중요한 프로젝트이므로 작동해야합니다.
- VBA 솔루션에서 수행 한 작업을 버리고 C #에서 처음부터 다시 만들어야합니다.
- 누군가 VBA와 C #의 두 가지 개별 솔루션을 지원해야합니다. [실제로, 그들은 현재 지원할 사람이 없다. 나는 보통 들어간다].
이제, 나는 그들의 우려의 일부를 어느 정도 이해할 수 있지만, 다음 단계와 그로 돌아 가야 할 단계에 대한 결정을 내려야합니다. 개인적으로 C #으로 구현하고 싶습니다. "Enterprise"솔루션을 구축하는 것이 더 나을 것이라고 생각하기 때문입니다. 또한, 저는 현재 VBA만큼 C #에 능숙하지 않으며이 같은 프로젝트를 통해 "다음 단계"로 나아 가기 위해이 기회를 C # 기술에 적용하고 싶습니다.
C # 솔루션 이이 프로젝트에 더 좋을 것이라고 생각하고 설득하는 데 사용할 수있는 포인트 목록을 준비했습니다.
- 단위 테스트.
- 소스 컨트롤.
- 코드 문서-다른 지원 담당자에게 지식을 전달합니다.
- 더 나은 코딩 규칙-ReSharper와 같은 것을 사용하여 더 나은 이름과 구조를 적용 할 수 있습니다.
- 더 나은 IDE-오류 강조 표시로 인한 실수가 줄어 듭니다.
- 어셈블리를 통한 더 많은 모듈화-향후 도구에서 재사용을 촉진 할 수 있습니다.
- 관리 배포-이 도구가 사용되는 사람을 제어 할 수 있습니다.
질문 : 설득하기 위해 다른 점을 추가 할 수 있습니까? 아니면이 프로젝트로 씹을 수있는 것보다 더 많이 물려고합니까? 어쨌든 VBA에서 조용히해야합니까?
나는 "새로운 언어"나 "더 시원한"언어가 결정의 기초가되어서는 안되며, 따라서 언어를 결정 지점으로 포함시키지 않기 때문에 새로운 언어로 옮기는 것만 알고 있습니다. 이것은 사실에 관한 것입니다.
또한 SO에 대한 많은 비교가 있기 때문에 언어로 C #과 VBA를 리터럴 비교를 요구하지 않습니다.