태그 보관물: code-smell

code-smell

PHP 웹 앱의 흐름을 잃어 가고 있는데, 작업하기가 점점 어려워지고 있습니다. 측면의 흐름을 추적하기가

몇 년 동안 프로그래밍을 해 왔으며 시간이 지남에 따라 C # 및 JavaScript에 매우 익숙해졌습니다. 탐색하는 데 문제가없는 더 큰 C # 및 JavaScript 프로젝트가 있습니다. 최근에 PHP에 대한 사전 경험이없는 작업을 위해 PHP & AngularJS 프로젝트를 시작했습니다.

PHP 측면의 흐름을 추적하기가 어려워지고 있습니다 (JavaScript 측면은 더 크지 만 쉽게 처리 할 수 ​​있습니다).이를 생각할 때 얽힌 실 공을 상상합니다. 시작했을 때 발생한 주요 디자인 실수는 쌓여서 디자인에 영향을 미치기 시작했습니다. 새로운 것을 구현하는 데 시간이 오래 걸립니다.

마감일이 촉박하고 좋은, DRY, SOLID, 코드를 작성하는 것이 점점 더 어려워지고 있습니다. 디자인 시간이 지남에 따라 코드 덩어리를 복사 / 붙여 넣기하여 동작에 약간의 변형을 가하는 것이 더욱 유혹적입니다. 컨텍스트 전환을 수행해야 할 때마다 (하나의 프로젝트에서이 프로젝트로 다시 전환 할 때마다) 코드베이스로 돌아가는 데 시간이 오래 걸립니다.

이를 해결하기 위해 어떤 조치를 취할 수 있습니까? 시간이 더 걸리는 것도 정당화 될 필요가 있습니다. 상사는 개발자가 아니며 개발 또는 소프트웨어 수명주기에 익숙하지 않으므로 설명하는 것이 평소보다 어려울 수 있습니다.



답변

기술 부채를지고 있습니다. 마감일이있는 조잡한 코드를 정당화할수록 마감일이 많을수록 점점 더 적은 성과를 달성 할 수 있습니다.

이것으로 완전히 벗어날 수 있음을 이해하십시오. 아무도 당신을 엉망으로 만들고 잡을 수 없습니다. 당신은 혼란에 둘러싸여 하루 깨어날거야.

이 시점에서 이력서를 업데이트하여 내 문제로 만들거나 부채를 갚고 코드를 청소하는 데 시간을 할애합니다.

당신이 청소 경로에 가면 이것이 “디자인에 더 많은 시간을 소비하는”것이 아니라는 것을 이해하십시오. 이것은 게으른 습관을 끊고 쓰레기를 버리는 것입니다.

더러운 코드 도매를 버리는 것은 나쁜 생각입니다. 작업으로 인한 것이 아니라 작업 코드가 아이디어를 포착하기 때문입니다. 더티 코드를 폐기하기 전에 아이디어를 깨끗한 코드로 옮기십시오.

단위 테스트를 사용하면 도움이되지만 동일한주의를 기울여 테스트를 생성 한 경우 문제를 해결해야 할 수도 있습니다.

강성을주지 마십시오. 변경할 수 없으면 소프트웨어가 아닙니다.


답변

새로운 것을 구현하는 데 시간이 오래 걸립니다.

이것이 당신의 정당화입니다. 겁을 먹고 까마귀를 먹고 왜 일이 오래 걸리고 시스템 리팩토링 + 재 설계에 약간의 시간을 소비해야하는지 설명하십시오.

그렇게하지 않으면 아래쪽에서 조금씩 리팩토링해야합니다. 작업이 이미 원하는 것보다 오래 걸리고 있습니다. 코드베이스를 터치 할 때마다 약간의 시간이 더 소요되어 더 나은 것을 시도하십시오. 통합 테스트를 추가하십시오. 추상화를 추출하십시오.

“거대한 프로젝트를 리팩터링하려면 어떻게해야합니까?” “한 번에 한 조각”입니다.

편집하다

관련 게시물을 읽었으며이 블로그 게시물 인 http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/를 방문했습니다 . TLDR : 프로젝트에서 거대한 리 팩터 ‘단계’를 만들려고 시도하지 마십시오. 프로젝트 소유자로부터 바이 인을 얻지 못할 가능성이 높으며, 보유하고 있는 시간 동안 무엇 을 처리 해야하는지 에 대한 선택을 안내받지 못할 것입니다. 대신, 각각의 새로운 변경 또는 버그 수정에 시간을내어 현재 작업중인 코드를 위조하십시오. 고칠 기회가있을 때 냄새가 들리지 않도록하십시오.


답변

Sonarqube는 PHP를 지원하므로 현재 부채 및 새로운 누수를 추적 할 수 있습니다. http://docs.sonarqube.org/display/PLUG/PHP+Plugin

Drupal을 사용한 라이브 샘플 https://sonarqube.com/dashboard?id=drupal


답변