개발자

JS에서 기능 구현 시 function 또는 class를 어떻게 적절하게 선택해서 사용하시나요?

2023년 05월 01일조회 249

안녕하세요. TypeScript와 같은 언어가 아닌 바닐라JS, Node.js에서 코드를 작성하면서 막연한 궁금증이 하나 생겼습니다. 일반적으로 단일 기능이라면 함수로 기능 하나를 구현하고 이러한 기능이 하나일 경우엔 "export default"를 2개에서 4개 정도는 "module.exports"를 이용하고 있습니다. 또는 하나의 주제로 다양한 기능이 있을 경우엔 클래스로 구현하고 클래스 내 멤버들 간 "this"를 이용한 멤버 호출 등이 있기도 합니다. 다른 분들은 어떤 기준으로 기능을 함수로 만들지 클래스로 만들지 결정하시나요? 이를테면 상속이라던지 그 외 클래스 특징이 필요할 때 클래스로 구현하고 그 외에는 함수로 구현하시나요? 생각처럼 깔끔하게 머릿속에서 정리가 안되서 질문드립니다 :)

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

손정현님의 프로필 사진

안녕하세요! 같이 일하는 분들이 더 잘 이해하고 받아들이기 쉬운 쪽으로 기준을 세워서 작업하면 되지 않을까 싶어요. 협업 관점이 아닌 코드 관점에서라면 저는 작업할때 우선 모듈 패턴을 기본으로 가져갑니다. 굳이 클래스를 쓸 이유가 없으면 안쓰는 것 같아요. 클래스를 사용할때는 특정 상태를 여러 함수가 공유해야할때 사용했던 것 같아요. JS에서 클래스 사용여부를 논하는건 항상 파가 갈리는 주제인것 같습니다. JSLint를 만들었던 더글라스 크락포드도 클래스 잘 안쓰는걸로 유명합니다. - https://www.youtube.com/watch?v=PSGEjv3Tqo0&t=300s 결론은, 개인적으로 정답이 없다고 생각됩니다. 본인 또는 팀이 더 효율을 낼 수 있는 방법으로 코드 작성을 하는게 제일 좋다고 생각해요. 여담이긴한데, JS가 왜 프로토타입 기반인지에 대해 잘 정리된 글이 있는데 읽어 보시면 좋을 것 같아서 링크 남깁니다 :) - https://medium.com/@limsungmook/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%99%9C-%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85%EC%9D%84-%EC%84%A0%ED%83%9D%ED%96%88%EC%9D%84%EA%B9%8C-997f985adb42

profile picture

익명

작성자

2023년 05월 01일

손정형님, 안녕하세요. 작성해주신 말씀 중 "클래스를 사용할때는 특정 상태를 여러 함수가 공유해야할때 사용했던 것 같아요." 이 의미는 API로 예를 들면 여러 API가 동일한 기능을 공유할 때 사용한다는 것과 동일하게 생각해도 될까요? 공유해준 미디엄 포스팅 글이 정말 도움이 되었습니다. 좋은 말씀 감사합니다 :)

손정현님의 프로필 사진

손정현

coya2023년 05월 02일

음, "여러 API가 동일한 기능을 공유할 때 사용한다는 것"의 정확한 뜻을 이해하지 못했습니다. 제가 의미한건 단순하게 A, B, C 함수가 a 라는 상태 값을 사용한다면 A, B, C를 D라는 클래스안에 함수로 넣어주고 a 라는 상태 값도 D 클래스 안에서 관리하는 걸 의미했습니다. MDN 문서 예시처럼요. - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

커리어리 AI 봇님의 프로필 사진

안녕하세요! 기능을 함수와 클래스 중 어떤 것으로 구현할지 결정하는 데에는 여러 가지 기준이 있을 수 있습니다. 일반적으로 다음과 같은 기준으로 선택할 수 있습니다. 1. 함수(Function) 사용 시기: - 간단한 기능이나 작업을 수행할 때 - 입력받은 값에 따라 결과를 반환하거나 특정 작업을 수행하는 경우 - 상태를 저장하거나 관리할 필요가 없는 경우 함수를 사용하는 것이 적절한 경우는 단순한 기능이나 작업이 필요하고, 상태 관리가 필요하지 않은 경우입니다. 예를 들어, 유틸리티 함수나 단순한 데이터 변환 작업 등이 여기에 해당합니다. 2. 클래스(Class) 사용 시기: - 관련된 기능과 상태를 함께 관리해야 할 때 - 인스턴스화가 필요하거나 인스턴스 간의 상태가 다른 경우 - 상속, 캡슐화 등 객체 지향 프로그래밍의 특징을 활용할 필요가 있는 경우 클래스는 관련된 기능과 상태를 함께 관리하거나, 인스턴스화가 필요한 경우에 적합합니다. 예를 들어, 데이터 모델이나 사용자 인터페이스 컴포넌트 등이 여기에 해당합니다. 결국, 함수와 클래스의 선택은 해당 기능의 요구사항과 복잡성, 그리고 상태 관리의 필요성에 따라 달라집니다. 간단한 기능이나 상태 관리가 필요하지 않은 경우에는 함수를 사용하고, 복잡한 기능이나 상태 관리가 필요한 경우에는 클래스를 사용하는 것이 좋습니다. 또한, 코드를 작성할 때 일관성을 유지하고 팀원들과의 협업을 고려하여 프로젝트 내에서 함수와 클래스 사용에 대한 가이드라인을 정하는 것이 좋습니다. 이렇게 함으로써 코드의 가독성과 유지 보수성이 향상됩니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!