138호. 제프리 웨이는 왜 테스트 메서드 이름에 스네이크 표기법을 쓸까? free

2020-05-07

안녕하세요! 라쉐프 이현석입니다.


각 조직마다 코딩 컨벤션을 가지고 있을 겁니다. 제가 속한 메쉬코리아는 PSR-12 확장된 코딩 스타일 가이드를 따릅니다. PSR-12는 PSR-1 기본 코딩 표준을 준수해야 한다는 규칙을 가지고 있습니다. PSR-1에는 모든 클래스의 메서드 이름을 반드시 카멜 표기법으로 작성해야 한다는 규칙이 있습니다.


혹시 라라캐스트를 챙겨보시는 분이 계시다면 제프리 웨이가 테스트 코드를 작성할 때 카멜 표기법이 아닌 스네이크 표기법을 사용하는 걸 본 적이 있을 겁니다. 아래 이미지를 보시면 두 번째 메서드는 스네이크 표기법으로, 세 번째 메서드는 카멜 표기법으로 작성한 것을 볼 수 있을 겁니다.



Testing Laravel 시리즈의 두 번째 에피소드에서 자신이 왜 카멜 표기법이 아닌 스네이크 표기법을 사용하는지 설명하는 장면이 나오는데요. 위 이미지가 그 장면을 캡쳐한 것입니다.


그렇다면 제프리 웨이는 왜 PSR 규칙을 지키지 않고 스네이크 표기법으로 테스트 메서드 이름을 짓는 걸까요? 본인이 밝힌 이유는 다음과 같습니다.



  • 테스트 코드는 제품 코드가 아니라서 PSR을 지킬 필요가 없다. (정확한 워딩은 “Remember it. This is your test. This is not your source code.” 입니다.)

  • 스네이크 표기법이 사람이 읽기 더 편하다.


그리고 @test 어노테이션을 사용하는 것과 테스트 메서드 이름 맨 앞에 test를 붙이는 것(위 이미지에서 예제를 볼 수 있습니다) 중에는 어노테이션 방식을 선호한다고 합니다. 이유는 역시 test가 앞에 붙지 않아야 더 사람이 읽는 문장과 유사하기 때문이라고 하네요.


어떤가요? 납득이 되시나요?


다른 사람들은 어떤가 싶어서 우리 1일 1식 라라벨의 단골 손님인 프릭 반 더 허르텐이 소속된 스파티와 제가 번역 중인 책을 쓴 매트 스타우퍼가 속한 타이튼의 코드를 한 번 살펴봤습니다.


https://github.com/spatie/laravel-backup/blob/master/tests/FileSelectionTest.php


https://github.com/tightenco/jigsaw/blob/master/tests/AtSymbolInMarkdownTest.php


두 조직 모두 테스트 메서드는 스네이크 표기법 + @test 어노테이션을, 일반 메서드는 카멜 표기법을 사용하고 있습니다.


이미 테스트 메서드 이름에 스네이크 표기법을 쓰는게 당연하다고 여기고 계셨던 분들도 계셨겠지만, 저는 당연히 모든 코드가 같은 스타일을 갖어야 한다고 생각했어서 조금 놀랐습니다. 저도 앞으로 제프리 횽님의 방식을 따라가는 걸로.. ㅎㅎㅎ


1일 1식 라라벨 138호

2020년 5월 7일


이현석

메쉬 코리아 개발자. 바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서를 쓰고, 클린 아키텍처 인 PHP를 번역했습니다. 2020년에 출간될 Laravel Up & Running 2nd Edition을 번역하고 있습니다.