RSS DEV 커뮤니티
팔로우
SRP와 영웅의 여정: 제다이 마스터처럼 코드를 작성하기
저자는 복잡한 레거시 코드베이스에서의 경험을 회고하는데, 여기서 단일 User 클래스가 유효성 검사, 비밀번호 해싱, 이메일 발송, 데이터베이스 영속성 및 보고서 생성을 모두 처리했습니다. 이 과부하된 클래스는 사소한 변경조차도 눈을 가리고 폭탄을 해체하는 것과 같이 위험하게 만들었습니다. 이러한 코드를 관리하고 신규 개발자를 온보딩하는 데 어려움이 있었기 때문에 더 나은 접근 방식의 필요성이 부각되었고, 이는 단일 책임 원칙(SRP)의 발견으로 이어졌습니다. SRP는 클래스가 변경될 이유가 하나만 있어야 한다고 명시합니다.SRP를 적용하면 명확성 향상, 테스트 용이성, 유연성 증대 및 안전성 강화 등 수많은 이점을 얻을 수 있습니다. 그런 다음 이 글은 잘못 설계된 "God" 클래스와 SRP를 준수하도록 리팩터링된 버전을 대조합니다. 초기 User 클래스는 여러 변경 동기, 어려운 테스트 및 긴밀한 결합을 보여주었습니다. 대조적으로, 리팩터링된 버전은 이러한 책임을 더 작고 집중된 클래스로 분해합니다: User, UserValidator, PasswordHasher, UserRepository, EmailService 및 ReportGenerator.이러한 분리는 각 클래스가 단일 목적을 갖도록 하여 이해, 테스트 및 독립적인 수정이 더 쉬워집니다. 예를 들어, 해싱 알고리즘을 변경하려면 PasswordHasher 클래스만 업데이트하면 됩니다. SRP를 준수하면 궁극적으로 개발 속도가 향상되고 버그가 줄어들며 팀 확장성이 향상되고 시스템이 미래에 더 대비할 수 있게 됩니다. 저자는 독자들이 자신의 프로젝트에서 여러 책임을 가진 클래스를 식별하고 리팩터링하도록 권장합니다.