개발자
안녕하세요 선생님들 현업에서는 정말 아무 생각없이 사용하고 있는 개발 방식이었는데 클린 코드라는 책을 접하면서 고민이 되는 부분이 하나 있습니다. SpringBoot ServiceImpl 구현 부분에서 만약 로그인 API를 개발한다는 가정하에, 로그인 API 에는 수많은 기능들이 포함될 수 있습니다.(유효성 검증, 비밀번호 5회 연속 시 잠금, 권한에 따른 페이지 이동 기능 등등) 하지만 클린 코드의 원칙 상 '되도록 하나의 메소드는 하나의 기능만을 포함한다.' 라는 원칙에 위배되기 때문에 각각의 기능을 분리하여 작성하는 것이 맞을듯 합니다. 그러나 각각의 수많은 부가기능(이 될수도 있는)들을 만들면 인터페이스와 클래스의 개수도 그만큼 늘어나게 되고 개발에 소요되는 시간도 늘어납니다. 실제로 제가 있었던 SI회사에서는 하나의 큰 기능(로그인 API) 자체를 기준으로 메소드를 만들고 부가 기능들을 모두 하나로 구현하였습니다. SI 특성 상 마감시간 내에 빨리 완성시켜주고 빠지면 땡이기 때문에 이런 것이라 생각되는데 만약 시간적인 압박이 있는 SI개발에서 두 부분중 어떤 원칙을 지키는 것이 효율적인지에 대한 고민이 되는데 길을 좀 알려주시면 감사드리겠습니다.
답변 1
안녕하세요 ! 뛰어난 분들이 많은 커리어리에서 제가 감히 말하기 조심스럽지만, 제 개인적인 생각을 말해볼게요 ! 답을 A 또는 B라고 말하기는 애매한 주제인 것 같아, 단일 책임 원칙에 가깝게 구현하기 위해 최대한 노력하자 가 베스트인 것 같습니다. '시간적인 압박이 있는' 이 부분 때문입니다. 결국 저희는 공부를 하기 위해 회사를 온 게 아니라 일을 수행하기 위해 회사를 왔기 때문이죠 저도 이펙티브 자바라는 책을 읽고 있고, 개발을 할 때 최대한 이펙티브 자바가 말하는 지향점을 따르고 지양점은 멀리하려고 합니다. 근데 사실 그게 일하면서 쉽지 않더라고요. 왜냐하면 우리는 모두 시간이 부족하잖아요. 🥲 그래도 저는 실제 구현하지 않더라도 고민을 하고 또는 GPT를 통해 최소한의 시간으로 스스로 고민한 것에 대한 예제 코드라도 뽑아보면서 최대한 이상점에 가까워지기 위해 노력하는 거 같아요
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!