2013-05-24 3 views
0

실제 코드 질문이 아니지만 여기에도 여전히 묻습니다. 나는 궁금해하기 때문에 : 당신은 어떻게하면 코드베이스에서 일할 것인가? 모든 작은 변화가 여러 기능과 클래스를 깨뜨리는 것은 나쁜 것인가? 당신이 만들거나 리팩토링을 시도하는 모든 작은 변화는 당신의 얼굴에 모든 것을 날려 버리게합니다.사용할 수없는 코드베이스를 사용한 작업

순환 의존성, 이중 포함 (C++), 스위치에 대한 enum 대신 일반 정수, 해당 라이브러리에 처음으로 빌드 된 응용 프로그램에 따라 사내 라이브러리, 라이브러리에서 시작하는 고스트 스레드, 시작 루프가 아닌 메인에서는 라이브러리 클래스에서 백그라운드에서 흑 마법을 사용하면 라이브러리의 싱글 톤은 응용 프로그램의 모든 곳을 가리키며 길고 이해하기 어려운 switch 문, 일관성없는 변수 이름 지정, 변수 이름의 매우 나쁜 철자법 및 목록이 계속됩니다 그리고에.

매번 기능을 추가하고 싶습니다. 기능의 기초가 불완전하고, 불안정하며, 유지 보수가 불가능하고 확장에 적합하지 않은 것으로 나타납니다. 매번 코드를 볼 때마다 거의 즉각적으로 달라 붙어서 리팩터링하지 않고도 기능을 추가하는 것은 불가능합니다.

코드에 기능을 해킹 할 수는 있지만 다시 돌아와서 엉덩이에 나를 물릴 것이므로 다른 팀 구성원이 스스로 신경 쓰지 않는 것처럼 보이기는하지만 간단히 거부합니다. 나는 그 태도가 코드베이스를 그만큼 심하게 만들었다 고 생각합니다.

저는 학생이며 이것은 학교 프로젝트를위한 것입니다. 그래서 당신이 선택했을 것입니다. 저는 클래스 A 프로그래머가 아닙니다. 나는 멍청한 행동이지만, 통제 할 수없는 충동을 가진 놈입니다. 깨끗하고 우아하고 재사용 가능한 것.

전체 리펙터가 옵션 인 것처럼 보이지 않습니다. 사람들은 그것을하기를 100 % 꺼려하며 29 가지에 반대합니다. 내가 코드를 보려고 할 때마다 나는 벽에 내 얼굴을 치고 충동을 느끼고, 내 얼굴을 먹고, 프로젝트를 삭제하고, 증오심을 끓여서 다시 보지 않으며, 다른 말로는 발언과 좌절감을 나타내지 않는다. " 이제는 작동하지만 문제가 보이지 않습니다. " 이걸 어떻게 다룰 거니? 내 정신을 위해서 몇 가지 팁을 사용할 수 있습니다.

답변

1

리팩토링은 좋은 일이지만,이를 수행하기 위해서는 기본 가정이 있습니다. 많은 좋은 테스트가 있습니다.

코드 기반에 각 방법의 책임을 명확하게 설명하는 단위 테스트가 충분합니까? 그렇지 않다면, 당신은 그 (것)들을 쓰는 것을 시작해야한다. 빅뱅으로 시작하지 마십시오.

파일럿 기능 부품을 확인하고 철저한 단위 테스트를 작성하십시오. 작성된 테스트가 충분히 충분한 지 여부를 판단하기위한 가이드 라인은 코드 커버 리지 (단지 지침 일 뿐이지 만)입니다. 이제 SOLID 원칙을 염두에두고 기능적 부분에 대한 리팩토링을 사용하십시오.

+0

솔리드 원리를 소개해 주셔서 감사합니다. 전에는 들어 본 적이 없었습니다. 그것은 잘못 된 모든 것들에 대한 점검표처럼 보입니다. 대부분의 클래스는 여러 가지 모호한 것들을합니다. 일들은 수정을 위해 열려 있지만 확장을 위해서가 아닙니다. 많은 하위 타입 타이핑이 없습니다. 싱글 톤을 사용하는 의존성 주입 대신에 그들의 작업에서 불분명 한 커다란 인터페이스가 있습니다. 빅뱅 btw는 무엇을 의미합니까? –

+0

빅뱅으로 시작한다는 것은 모든 모듈을 리팩터링하는 것을 의미합니다. 오히려 한 번에 하나의 기능 모듈 (코드 네임 스페이스 C++/C# 또는 Java의 패키지)을 사용하여 코드 기반을 공격해야합니다. 문제가 발생하면 문제를 좁히고 포함하는 것이 더 쉽습니다. – aquaraga

+0

코드베이스에는 네임 스페이스가 없습니다. 정말 재앙입니다. 빅뱅으로 시작한 것은 며칠 전이었고 막 끝 냈습니다. 오래 동안 나에게 좋은 생각이 들었지 만, 나는 코드베이스를 다시 잡았다 고 생각한다. 귀하의 답변에 감사드립니다. 나는 그것을 받아 들인 것으로 표시 할 것이다. –