과학 코드는 일반적인 코딩 표준을 무시할만큼 다른 영역입니까?
아뇨.
연구 코드는 종종 "버려지고"배경이 아닌 개발자가 아닌 사람들이 작성하지만 학업 자격은 강력합니다. 내가 쓴 연구 코드 중 일부는 현재 나를 울게 만들 것이다 . 그러나 효과가있었습니다!
고려해야 할 사항 중 하나는 프로젝트의 게이트 키퍼가 포함되는 것을 추진한다는 것입니다. 대규모 프로젝트 경우 시작 학술 / 연구 코드 프로젝트로는, 작업 끝, 지금 엉망이다, 누군가가 그것을 리팩토링 할 수있는 주도권을 쥐고있다.
문제를 일으키지 않는 기존 코드를 리팩터링하려면 많은 작업이 필요합니다. 특히 도메인마다 다르거 나 테스트가없는 경우. 것을 당신은 볼 을 OpenCV는 스타일 가이드가 매우 포괄적이며 완벽하지 않더라도. 이것을 기존의 모든 코드에 소급 적용합니까? 그것은 .. 기절 한 마음이 아닙니다.
모든 코드가 작동하면 훨씬 더 어렵습니다. 깨지지 않았기 때문입니다. 왜 고쳐?
그러나 이러한 프로젝트는 번성하고 유지 관리되고 널리 사용됩니다!
이것은 어떤 의미에서 답입니다. 작업 코드는 여전히 유용하므로 유지 관리가 더 쉽습니다.
특히 처음에는 혼란 스러울 수 있습니다. 이 프로젝트들 중 일부는 아마도 일회성 프로젝트로 시작했을 것입니다.
또한 복잡한 알고리즘을 구현하는 경우 더 큰 방법을 사용하는 것이 더 합리적 일 수 있습니다. 과학적 측면에 익숙한 다른 사람들도 알고리즘을 개념적으로 더 잘 이해할 수 있기 때문입니다. 논문 논문은 최적화와 관련이있었습니다. 주요 알고리즘 로직을 하나의 방법으로 사용하는 것이 분리하려는 것보다 이해하기가 훨씬 쉽습니다. 그것은 분명히 "방법 당 7 줄"규칙을 위반했지만 다른 연구원이 내 코드를보고 알고리즘의 수정 사항을 더 빨리 이해할 수 있음을 의미했습니다.
이 구현이 추상화되어 잘 설계되면 프로그래머 가 아닌 사람 에게는이 투명성이 손실됩니다 .
동료 응답자에게 :이 질문은 하나 이상의 과학 영역에서 계산 집약적 인 작업을위한 오픈 소스 라이브러리의 코드 기반을 말합니다. 이 질문은 일회용 코드에 관한 것이 아닙니다. 답변을 작성하기 전에 강조 표시된 모든 부분을 파악할 수 있도록 잠시 멈추십시오.
사람들은 종종 모든 오픈 소스 프로젝트가 "저는 수천 / 수백만의 다른 사람들이 널리 사용하고 사용할 라이브러리에 대한 좋은 아이디어를 가지고 있습니다"라고 시작한다고 생각합니다. 그러면 모든 프로젝트가 그렇게됩니다.
많은 프로젝트가 시작되어 죽는 것이 현실입니다. 엄청나게 적은 비율의 프로젝트가 OpenCV 또는 VTK 등의 수준으로 "만들었습니다".
OpenCV는 인텔의 연구 프로젝트로 시작되었습니다. Wikipedia는이를 "일련의 프로젝트"의 일부로 설명합니다. 최초의 비 베타 출시는 2006 년 또는 처음 시작된 지 7 년 후였습니다. 처음에는 목표가 완벽한 코드가 아니라 의미있는 베타 릴리스 인 것으로 생각됩니다.
또한 OpenCV의 "소유권"이 크게 변경되었습니다. 모든 책임 당사자가 동일한 표준을 채택하여 프로젝트 기간 동안 유지하지 않는 한, 표준이 변경됩니다.
또한 Clean Code가 영감을 얻은 Agile Manifesto가 공개되기 전에 OpenCV가 몇 년 동안 있었음을 지적해야합니다 (VTK는 거의 10). VTK는 Clean Code가 출판되기 17 년 전에 시작되었습니다 (OpenCV는 "9 년 전만").