경험상 세 번째로 무언가를해야 할 때 작은 스크립트를 작성하여 자동화하거나 접근 방식을 다시 생각해야 할 때입니다.
나는이 시점에서 본격적인 "도구"를 만들지 않고 수동으로 한 일을 자동화하는 작은 스크립트 (일반적으로 bash 또는 python; perl도 작동하거나 심지어 PHP도 가능)를 만듭니다. 기본적으로 DRY 원칙 (또는 본질적으로 동일한 단일 소스 원칙)을 적용한 것입니다. 두 소스 파일을 동시에 변경해야하는 경우 공통의 사실이 있어야합니다. 진실은 하나의 중심 장소에 고려하여 저장해야합니다. 리팩토링을 통해 내부적으로이 문제를 해결할 수 있다면 좋지만 때로는 이것이 가능하지 않으며 사용자 지정 스크립트가있는 경우가 있습니다.
그런 다음 나중에 스크립트가 완전한 도구로 발전 할 수도 있고 발전하지 않을 수도 있지만 일반적으로 하드 코딩 된 많은 항목이 포함 된 매우 구체적인 스크립트로 시작합니다.
나는 열정을 가지고 거친 일을 싫어하지만, 그것이 잘못되었거나 잘못된 디자인의 표시라고 강력하게 믿는다. 게으르다는 것은 프로그래머에게 중요한 특성이며 반복적 인 작업을 피하기 위해 많은 시간을 투자하는 것이 좋습니다.
물론, 때로는 균형이 부정적입니다. 코드를 리팩토링하거나 스크립트를 작성하여 1 시간의 반복 작업을 절약하기 위해 3 시간을 소비합니다. 그러나 일반적으로, 균형은 긍정적입니다. 직접적으로 명확하지 않은 비용을 고려할 경우 : 인적 실패 (인간은 반복적 인 작업에서 실제로 나쁩니다), 더 작은 코드베이스, 중복 감소로 인한 유지 보수성 향상, 자체 문서화, 빠른 미래 깨끗한 코드 개발. 따라서 현재 잔액이 마이너스로 표시 되더라도코드베이스가 더 커지고 3 개의 데이터 개체에 대한 웹 양식을 생성하기 위해 작성한 도구는 30 개의 데이터 개체가있을 때에도 여전히 작동합니다. 필자의 경험에 따르면, 균형 잡힌 작업을 선호하여 균형을 잡는 것으로 추정됩니다. 아마도 반복 작업이 예측하기 쉽고 추정치가 낮기 때문에 리팩토링, 자동화 및 추상화가 예측하기 어렵고 위험하며 과대 평가 된 것으로 인식되기 때문입니다. 일반적으로 자동화는 그렇게 어렵지 않습니다.
그런 다음 너무 늦게 할 위험이 있습니다. 3 개의 새로운 데이터 객체 클래스를 형태로 리팩토링하고 웹 양식을 생성하는 스크립트를 작성하는 것이 쉽고, 일단 완료하면 27 개의 클래스를 추가하기가 쉽습니다. 스크립트로 작업하십시오. 그러나 30 개의 데이터 객체 클래스가 있고 각각 손으로 작성한 웹 양식이 있고 그 사이에 일관성이없는 지점 (일명 "유기적 성장")에 도달하면 해당 스크립트를 작성하는 것이 거의 불가능합니다. 30 개의 클래스를 자신의 형태로 유지하는 것은 반복적 인 코딩과 반 수동 검색 대체의 악몽입니다. 일반적인 측면을 변경하는 데 30 배가 걸리지 만 문제를 해결하기 위해 스크립트를 작성하는 것은 프로젝트가 시작되었을 때 점심 시간이 없었던 것은 이제 버그를 수정하고 사용자를 교육하며 심지어 포기하고 되돌릴 수있는 한 달 동안의 여파가 무서울 정도로 무서운 2 주간의 프로젝트였습니다. 오래된 코드베이스. 아이러니하게도, 30 클래스 엉망을 작성하는 것은 언제나 편리한 스크립트를 이용할 수 있었기 때문에 깨끗한 솔루션보다 오래 걸렸습니다. 내 경험상 반복적 인 작업을 너무 늦게 자동화하는 것은 장기적으로 실행되는 대규모 소프트웨어 프로젝트의 주요 문제 중 하나입니다. 당신은 항상 편리한 스크립트를 타고 있었기 때문에. 내 경험상 반복적 인 작업을 너무 늦게 자동화하는 것은 장기적으로 실행되는 대규모 소프트웨어 프로젝트의 주요 문제 중 하나입니다. 당신은 항상 편리한 스크립트를 타고 있었기 때문에. 내 경험상 반복적 인 작업을 너무 늦게 자동화하는 것은 장기적으로 실행되는 대규모 소프트웨어 프로젝트의 주요 문제 중 하나입니다.