HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤎
프론트엔드 데브코스 5기 교육생
/
🦁
이희진팀
/
🤝
컨벤션
/
개발 컨벤션
개발 컨벤션
개발 컨벤션

개발 컨벤션

사프 컨벤션
 
컴포넌트 작성 방식, 네이밍 규칙, 프로젝트 폴더와 파일 구조 등 필요한것들을 정하여 일관성 있게 개발합시다!
 
[중요] 줄임말은 쓰지 않는다. 줄임말은 어떠한 경우에도 사용하지 않습니다. res e(이벤트 객체) i 등 과 같은 모든 줄임말은 금지합니다.
 
1. 함수 export 방식 선언 후 export 👈VS 선언과 동시에 export
함수 선언 방식은 const 를 사용합니다.
const Component = (props: Props) => {} export default Component;
  1. tsx를 반환한다면 확장자 이름을 .tsx를 사용합니다.
3. ASI를 이용하지 않고 세미콜론을 필수적으로 써줍니다. (prettier로 관리).
// Uncaught TypeError: 1 is not a function let a = 1 (function() { console.log("Hello!"); })();
4. 리터럴 값은 상수로 만들어서 사용합니다. 상수는 스네이크 케이스를 사용합니다.
const BASE_URL = 'http://localhost3000';
  1. 모든 함수는 화살표 함수로 작성합니다.
  1. var를 쓰지 않고, const와 let을 사용합니다.(단, const를 주로 쓰되 변수의 값 변경이 필요할 경우 let을 쓴다.)
  1. image, svg는 케밥 케이스 사용하여 네이밍합니다.(ex. erase-check.svg).
  1. 변수명은 camelCase로 작성합니다. (issueLabel).
  1. .tsx 파일의 파일(폴더)명은 PascalCase를 사용합니다. ex) LoginPage.tsx.
  1. 절대 경로로 import, export 사용합니다. src: @, test: #
  1. export할때 barrel export 방식을 사용하지 않습니다.
  1. 타입을 분리할 경우(여러 곳에서 타입이 생성될 경우(2군데 이상)) types 디렉토리에 관리한다.
  1. 최대한 코드에 대한 설명 주석은 적지 않습니다. 이름만 읽어도 무슨 일을 하는 함수인지 알 수 있어야합니다.
  1. 만약 주석이 필요한 경우 // TODO: 해야 할 일 혹은 한 일을 날짜와 함께 적어줍니다.(2022.09.01). 신경써서 사용하기
    1. // TODO: [2024.02.01] 해야 할 일
  1. 변수명이나 함수명이 길어도 좋으니 한눈에 봐도 알아볼 수 있는 최대한 명시적인 변수명을 정해줍니다. 단, 의미없거나 불필요한 접두사나 접미사가 붙는 것은 지양합니다.(ex) currentTodoListData (X) ⇒ todoList (O))
    1. 변수명은 명사를 사용(단, 플래그들의 is, has는 예외) 함수명은 동사 + 명사
16. 이벤트 핸들러를 정의할때 handle + 메서드명로 정의합니다.
on 접두사는 하위 컴포넌트에 Props 로 전달할때 사용합니다.
handle 접두사가 붙은 경우, 이벤트가 발생했을 때 호출되는 실제 Function을 의미합니다.(handle + 이벤트 + 버튼)
function DateTypeToggleButton ({ onClick }) { return <button onClick={onClick} /> } function ModalButton ({ onClick }) { return <button onClick={onClick} /> } function Calendar () { const handleClickDateType = () => {} const handleModalOpen = () => {} /* 주의!! 컴포넌트의 props로 핸들러를 넘길때는 on 접두사를 사용해야 합니다. */ return ( <> <DateTypeToggleButton onClick={handleClickDateType} /> <ModalButton onClick={handleModalOpen} /> </> ) }
  1. 화살표 함수 작성시 한 개의 파라미터만 사용하더라도 중괄호 사용(prettier로 관리)
  1. 선언부, 구현부 사이에는 줄 간격 해줍니다. 이외에 의미가 서로 다른 부분이라면 줄 간격 필수.
18. 인라인 함수는 사용하지 않습니다. 함수를 생성하여 할당해주세요.
function MyComponent() { return ( // ❌ <button onClick={() => setClose(true)}>버튼</button> ); }
  1. 후위 연산자 사용하지 않습니다. ++ --
21. react 의 for문 고유 키를 유니크하게 만들어줄 값이 없다면 다음과 같은 방법으로 결정합니다.
todoList.forEach((todo, index) => { return ( <li key={${index}-${todo.value}}> value <li> ) });
  1. import할때 형제 파일의 경우는 절대 경로 사용하지 않고, 상대 경로 사용합니다. ./component.tsx
  1. 컴포넌트의 Props type의 이름은 항상 Props 로 생성한다. tsx를 반환하지 않는 ts 파일의 경우에는 Parameters 이름으로 생성한다.
  1. 컴포넌트와 커스텀 훅만 export default
  1. children 타입은 ReactNode
  1. interface 를 주로 사용하고, interface를 사용할 수 없을때는 type 사용
  1. h1, h2,…헤딩 태그들을 스타일용으로 사용하지말자. 접근성 위배
  1. <> </> 대신 <Fragment></Fragment> 사용하기