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


14

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

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

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

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



1
감사합니다 @ gnat 그러나 실제로 문제를 실제로 해결하는 방법을 알아내는 것보다 상사를 상대로 관심을 기울이지 않습니다. 내가 문제를 식별하고 변경하는 좋은 방법 론적 방법을 모른다면 상사에게 소송을 제기하는 것은 좋지 않습니다.
Douglas Gaskell

답변:


11

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

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

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

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

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

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

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


1
"아무도 당신을 잡으려고 잡아 당기지 않을 사람이 없습니다." ... 코드 검토를하지 않는 한. ;)
jpmc26

1
@ jpmc26 만약 당신이 코드 리뷰가이 운명으로부터 당신을 구할 것이라고 생각한다면 당신은 착각합니다. 코드 검토는 다른 사람들로부터 배우고 자 할 때만 도움이됩니다. 마감일에 집중할 때는 아닙니다. 일하고, 지저분하고, 코드는 의견을 거듭 거릴 것입니다. 관리자가 분기를 뒤집어 이러한 분쟁을 해결하는 것을 보았습니다. 당신이 품질에 관심이 없다면 아무도 당신에게서 그것을 끌어낼 수 없습니다. 엉망이되지 않도록 다른 사람에게 의지 할 수 있다고 생각하지 마십시오. 그렇다면 문서를 업데이트하도록 지정합니다.
candied_orange

내 의견을 읽고 코드 리뷰가 유니콘이나 무지개와 같은 마술이라고 말하면 노력이나 의지없이 모든 것을 고칠 수 있습니다. 그러나 그들은 누군가에게 당신을 불러 낼 기회를줍니다.
jpmc26

1
@ jpmc26 내 대답을 읽고 포기할 희망이 없다고 생각했다면 엄청나게 착각 한 것입니다. 프로그래머는 코드를 작성하기 위해 프로세스에 의존하지 않고 깨끗한 코드에 대한 개인적인 책임을 져야합니다. 한 가지만 중요합니다. 당신은 걱정하거나하지 않습니다.
candied_orange

물론 최고의 프로그래머조차도 때때로 멍청한 결정을 내릴 것입니다. 다른 사람과의 코드 검토를 통해 코드를 미리 잡을 수있는 다른 사람 앞에 코드를 배치 할 수 있습니다. 그게 요점 입니다. 그것은의 하드 당신이 실제로 뭔가를 변경하려고 할 때까지 스스로 문제 명소를 볼 수 있으며 어려워진다. 물론 상관없이 코드 검토 및 기타 기술은 쓸모가 없습니다.
jpmc26

9

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

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

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

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

편집하다

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


3
그것이 바로 과거의 유산으로 한 일입니다. 좋은 점 : 일단 전환점이되면 프로젝트는 요정 먼지처럼 빛나기 시작합니다.
qwerty_so

-2

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

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


1
안타깝게도 작업 장치에 JVM을 설치할 수 없습니다. 그렇지 않으면 훌륭한 도구처럼 보입니다.
Douglas Gaskell

개발자 워크 스테이션에게는 꽤나 끔찍합니다.
Archimedes Trajano

로컬 관리자 나 설치 권한이 없거나 흰색으로 표시되지 않은 응용 프로그램에 대한 실행 권한이 없습니다. 훨씬 더 나빴습니다 .... 슬프게도.
Douglas Gaskell

공감한다고 말할 수는 없지만 공감합니다.
Archimedes Trajano

OP의 질문에 대한 대답이 아니라 도구에 대한 광고 / 링크 일뿐입니다.
James Snell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.