개인적인 경험에 의해 당신이 가진 관점이 왜곡 될 수 있습니다. 이것은 개별적으로 정확한 사실의 미끄러운 기울기이지만 언뜻보기에는 정확 해 보이지만 결과 추론은 정확하지 않습니다.
- 프레임 워크는 소규모 프로젝트보다 범위가 더 큽니다.
- 더 큰 코드베이스에서는 나쁜 습관을 다루기가 훨씬 어렵습니다.
- 프레임 워크를 구축하려면 (평균적으로) 소규모 프로젝트를 구축하는 것보다 숙련 된 개발자가 필요합니다.
- 더 나은 개발자는 우수 사례 (SOLID)를 더 많이 따릅니다.
- 그 결과, 프레임 워크는 좋은 연습을위한 높은 필요가 와 더 밀접하게 좋은 연습 경험이있는 개발자들에 의해 구축되는 경향이있다.
이는 프레임 워크 및 더 작은 라이브러리와 상호 작용할 때 상호 작용할 모범 사례 코드가 더 큰 프레임 워크에서 더 일반적으로 발견됨을 의미합니다.
이 오류는 매우 흔합니다. 예를 들어 제가 치료를받은 모든 의사는 거만했습니다. 그러므로 나는 모든 의사들이 거만하다고 결론지었습니다. 이러한 오류는 항상 개인적인 경험을 바탕으로 담요를 추론 하는 데 어려움을 겪 습니다.
귀하의 경우에는 작은 라이브러리가 아닌 더 큰 프레임 워크에서 주로 모범 사례를 경험했을 수 있습니다. 당신의 개인적 관찰은 틀리지 않지만 일화적인 증거이며 보편적으로 적용 할 수는 없습니다.
2 가지 프로그래밍 모드-요구 사항 및 KISS (일반 프로그래밍)를 통해 요구되는 내용을 다소 정확하게 생성하거나 다른 개발자가 필요로하는 유연성을 제공하는 매우 일반적이고 재사용 가능한 논리, 서비스 등을 생성 (프레임 워크 프로그래밍)
여기서 약간 확인하고 있습니다. 프레임 워크가 무엇인지 생각하십시오. 응용 프로그램이 아닙니다. 다른 사람들이 모든 종류의 응용 프로그램을 만드는 데 사용할 수있는 일반화 된 "템플릿"입니다. 논리적으로 이는 모든 사람이 사용할 수 있도록 프레임 워크가 훨씬 더 추상화 된 논리로 구축됨을 의미합니다.
프레임 워크 빌더는 후속 애플리케이션의 요구 사항이 무엇인지조차 모르기 때문에 단축키를 사용할 수 없습니다. 기본적으로 프레임 워크를 구축하면 다른 사람들이 자신의 코드를 사용할 수 있도록 장려합니다.
그러나 애플리케이션 빌더는 제품 제공에 중점을두기 때문에 논리적 효율성에 영향을 줄 수 있습니다. 그들의 주요 목표는 코드의 작동이 아니라 사용자의 경험입니다.
프레임 워크의 경우 최종 사용자는 코드와 상호 작용할 다른 개발자입니다. 코드 품질은 최종 사용자에게 중요합니다.
응용 프로그램의 경우 최종 사용자는 개발자가 아니며 코드와 상호 작용하지 않습니다. 코드의 품질은 중요하지 않습니다.
이것이 바로 개발 팀의 설계자가 종종 모범 사례의 집행자로 행동하는 이유입니다. 그것들은 제품 제공에서 제거되는 한 단계이므로 애플리케이션 자체의 제공에 초점을 맞추기보다는 코드를 객관적으로 보는 경향이 있습니다.
이러한 추상화의 진입 점을 추가하면 사용자 요구 사항을 실제로 충족 시키거나 기존 프레임 워크 및 기술 스택 위에 프레임 워크를 만들어 향후 추가를 쉽게 할 수 있습니까? 어떤 경우에 고객 또는 개발자의 이익을 위해 봉사하고 있습니까?
이것은 흥미로운 점이며, 사람들이 여전히 좋은 습관을 피하는 것이 정당화되는 주된 이유입니다.
아래 요점을 요약하면 : 현재 알려진대로 요구 사항을 변경할 수없는 경우에만 모범 사례를 건너 뛸 수 있으며 코드베이스에 변경 / 추가가 없을 것입니다. 스포일러 경고 : 거의 그렇지 않습니다.
예를 들어, 특정 파일을 처리하기 위해 5 분 콘솔 응용 프로그램을 작성할 때는 모범 사례를 사용하지 않습니다. 오늘은 응용 프로그램 만 사용할 예정이므로 나중에 업데이트 할 필요가 없습니다 (다시 필요할 경우 다른 응용 프로그램을 작성하는 것이 더 쉬울 것입니다).
4 주 안에 애플리케이션을 순조롭게 구축 할 수 있고 6 주 내에 애플리케이션을 올바르게 구축 할 수 있다고 가정 해 봅시다. 언뜻보기에, 그것을 건전하게 만드는 것이 더 좋아 보인다. 고객은 응용 프로그램을 더 빨리 얻을 수 있으며 회사는 개발자 임금에 더 적은 시간을 소비해야합니다. 승리?
그러나 이것은 미리 생각하지 않고 내려진 결정입니다. 코드베이스의 품질로 인해, 순조롭게 구축 된 코드를 크게 변경하는 데 2 주가 걸리고, 올바르게 구축 된 코드를 동일하게 변경하는 데는 1 주일이 걸립니다. 앞으로 이러한 변경 사항이 많이있을 수 있습니다.
더욱이, 초기에 개발 된 코드베이스에서 생각했던 것보다 더 많은 작업이 예상치 않게 더 많은 작업을 필요 로하는 경향이있어 개발 시간을 2 주가 아닌 3 주로 단축시킬 수 있습니다.
그리고 버그를 찾는 데 시간을 낭비하는 경향이 있습니다. 최종 제품이 예상대로 작동한다는 가정하에 무심코 일하기 때문에 시간 제약으로 인해 로깅이 무시되거나 구현을 원하지 않는 프로젝트의 경우가 종종 있습니다.
주요 업데이트 일 필요도 없습니다. 현재 고용주에서 신속하고 더러운 여러 프로젝트를 보았으며 요구 사항의 잘못된 통신으로 인해 가장 작은 버그 / 변경이 필요한 경우 모듈 후 모듈을 리팩터링 해야하는 연쇄 반응으로 이어졌습니다 . 이 프로젝트 중 일부는 첫 번째 버전을 출시하기 전에 무너져 버렸습니다.
바로 가기 결정 (빠르고 더러운 프로그래밍)은 요구 사항이 정확하고 변경이 필요하지 않다는 결론을 확실하게 보장 할 수있는 경우에만 유용합니다 . 내 경험상, 나는 그것이 사실 인 프로젝트를 본 적이 없다 .
좋은 연습에 여분의 시간을 투자하는 것은 미래에 투자하는 것입니다. 기존 코드베이스가 모범 사례를 기반으로 구축되면 향후 버그 및 변경이 훨씬 쉬워집니다. 두세 번만 변경하면 이미 배당금을 지불하게됩니다.