1 년 이내에 2 명의 개발자에서 10 명으로 성장한 팀과 함께 일합니다. 저는 3 위였으며 코딩 표준 문제를 최초로 제기했습니다. 두 명의 원래 개발자는 몇 년 동안 나란히 일해 왔으며 외계인처럼 보이는 공통 표준을 채택했습니다. 우리는 당신이 묘사하는 것과 똑같은 문제가있었습니다.
우리가 한 일은 :
연구 코딩 표준
우리는 며칠 동안 기존의 오픈 소스 프로젝트를 조사했습니다. 우리는 팀이 빠르게 확장 할 것이라는 것을 알았고 일반적인 지침이 아닌 실제 프로젝트를 기반으로 실제 솔루션을 찾고있었습니다. 또한 우리는 최적의 코딩 표준을 신경 쓰지 않았지만 모든 코드베이스의 리팩토링을 요구하지 않는 일련의 규칙과 지침이 필요했습니다. 우리는 당신이 원한다면 코딩 표준 해킹을 찾고있었습니다.
우리 셋은 기존 PHP 프로젝트를위한 최상의 코딩 표준이 Zend Framework가 따르는 표준이라고 결정했습니다. 다행히 Zend Framework 사람들은 매우 포괄적 인 코딩 표준 문서를 제공합니다 .
자체 코딩 표준 만들기
물론 우리 프로젝트에 다른 프로젝트의 코딩 표준을 적용하는 것은 의미가 없었습니다. Zend Framework 문서를 템플릿으로 사용합니다.
- 먼저 우리는 프로젝트에 적용되지 않은 모든 것을 제거했습니다
- 그런 다음 스타일 문제로 인식 한 모든 것을 스타일로 변경했습니다.
- 그리고 마침내 우리는 모든 것을 썼습니다
그래서 우리는 멋진 위키에 저장된 상당히 큰 문서를 가지고 있었고, 우리 모두가 동의 한 멋진 독서였습니다. 그리고 그 자체로는 전혀 쓸모가 없습니다.
우리의 약속을 지키십시오
당시 우리의 코드베이스는 약 1 * 10 ^ 6 슬로크였습니다. 우리는 공식적인 코딩 표준을 채택한 이후에 코드 리팩토링을 시작해야한다는 것을 알고 있었지만 그 당시에는 다른 문제가있었습니다. 그래서 우리는 단지 5 * 10 ^ 3 슬럭으로 핵심 라이브러리를 리팩토링하기로 결정했습니다.
우리는 (우리가 대신 현지 욕설을 사용하는 코딩 표준의 마스터로 우리 중 하나를 할당 마스터 확인하고 표준을 적용의 책임). 스프린트마다 역할을 재활용합니다. 나는 처음이었고 거의 모든 커밋을 모니터링해야했기 때문에 많은 작업이었습니다.
우리는 재임 기간 동안 원본 문서에 대한 몇 가지 새로운 토론과 작은 부록을 가졌으며 마침내 다소 안정적인 문서를 가졌습니다 . PHP 5.3은 이름이 아닌 주요 릴리스이기 때문에 우리는 지금 그것을 바꾸고 있습니다. 그러나 이러한 변화의 대부분은 언어의 새로운 기능에 있습니다.
새로운 사람을 다루기
다음에 새로 온 사람이 도착했을 때, 우리의 코딩 표준을 테스트 할 때가되었습니다. 코드베이스에 대한 간단한 소개 후 코딩 표준 문서를 평가하도록 요청했습니다. 그는 거의 울었다. 그가 모든 것을 다르게 한 것처럼 보였다.
당시 코딩 표준 마스터 였으므로 입력 내용을 평가하고 그에 따라 문서를 수정해야했습니다. 그의 제안은 다음과 같습니다.
- 개인 스타일의 문제 (요약)
- 그의 Java 배경에는 의미가 있지만 PHP에서는 그다지 중요하지 않은 표준 (해산)
- 그가 PHP에 대한 그의 짧은 노출로부터 수행 한 협약 (일부는 기각되었지만 많은 사람들이 우리가 처음 연구에서 결코 생각하지 않았거나 발견하지 못한 대중적인 협약임이 입증되었습니다)
다음 몇 주 동안 그는 간단한 작업을 배정 받았다. 표준에 따라 코드베이스의 여러 부분을 최신 상태로 유지한다. 몇 가지 규칙에 따라 신중하게 부품을 선택해야했습니다.
- 코드베이스와 PHP에 익숙하지 않은 사람에게는 코드가 비교적 쉬워야합니다.
- 코드는 그가 고용 한 것에 관한 것이어야한다
나는 그의 과정을 모니터했고 그는 훌륭한 일을했다. 우리는 문서에 적합하지 않은 코드의 여러 부분을 식별하고 그에 따라 수정했습니다 (코드 및 / 또는 표준 중 더 의미가있는 것)
그리고 또 다른 새로운 남자가 도착했습니다. 프로세스를 반복하고 (이번에는 다른 마스터) 다시 작동했습니다. 그리고 다시.
결론적으로
- 코딩 표준 문서를 작성하되, 표준이 독점적으로 자신의 것이 아니라 플랫폼의 더 넓은 커뮤니티에서 공통 표준을 반영하는지 확인하십시오.
- 코딩 표준 마스터와 유사한 역할을 할당하십시오. 적어도 새로운 코드, 특히 새로운 멤버의 새로운 코드를 모니터링하는 사람. 지루하기 때문에 역할을 재활용하십시오.
- 항상 새 멤버의 입력을 평가하십시오. 말이 되더라도 항상 표준을 수정하십시오. 코딩 표준 문서는 발전해야하지만 느리게 진행되어야합니다. 반복 할 때마다 코드베이스를 리팩토링하고 싶지 않습니다.
- 각 신입 회원이 귀하의 표준과 규칙을 배우고 적응할 수 있도록 시간을주십시오. 이러한 상황에서 가장 잘 작동하여 학습하십시오.
- Wiki는 그러한 문서를 위해 놀라운 일을합니다.
- 코드 검토는 모든 상황에서 놀라운 일을합니다!
프로세스의 어느 시점에서 우리는 커밋 사전 후크 를 사용 하여 표준 확인을 자동화 하는 것이 좋습니다 . 우리는 여러 가지 이유로 그것에 대해 결정했습니다.이 문제에 관한 StackOverflow에 대한 흥미로운 토론이 있습니다.
일부는 PHP에 따라 다르지만 모든 플랫폼에 적용됩니다.