You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
현재 코드 컨벤션이 마땅히 없는 상황입니다.
특히 이전에 다른 분들이 작업해주신 코드를 제가 이어받기도 했고
또한 저 마저도 학습을 하다보니 매번 의사결정의 기준이 바뀌게 되었고 따라서 매번 바뀌는 컨벤션으로 인해서
AI를 활용할때 손해가 발생하는것 같습니다.
AI를 통해 컨벤션을 분석한 결과는 아래와 같습니다
전반적으로 next를 잘 사용할 수 있는 구조로 가는게 좋을 것 같다고 생각하는데 의견이 있으면 알려주시면 감사하겠습니다.
어드민 - 웹 - 대학 세개를 아우를 컨벤션을 만들어서 리뷰 및 개발 편의성 증진을 위함입니다.
페이지별로 보면 이렇게 정리할 수 있어요.
멘토페이지
가장 기준으로 삼기 좋은 형태예요. page.tsx는 metadata, params, wrapper만 두고 실제 화면은 ./_ui 아래로 내립니다. 화면 전용 hook은 ./_hooks, schema/util은 ./_lib에 둬서 route-local 컨벤션이 잘 보입니다. 다만 MentorDetialContent 같은 오타, Client/Content 네이밍 기준은 정리하면 좋습니다.
홈
Next에 꽤 잘 맞습니다. 서버 페이지에서 데이터를 가져오고, _ui 섹션 컴포넌트에 props로 내려요. 다만 독립적인 fetch는 Promise.all로 병렬화하면 더 Next스럽습니다.
커뮤니티
Next App Router 관점에서는 제일 진보된 편입니다. Server Component에서 React Query prefetch 후 HydrationBoundary로 넘기는 구조가 좋아요. 대신 route 내부 파일이 CommunityPageContent.tsx, PostCards.tsx처럼 루트에 평평하게 있어서 멘토페이지 컨벤션과 다릅니다. _ui, _hooks, _lib로 옮기면 통일감이 좋아집니다.
지원 현황 / 성적 페이지 ScorePageContent, ScoreSearchBar, ScoreSheet 등이 route root에 섞여 있습니다. 화면 상태, 필터링, 정렬 로직도 Content 안에 몰려 있어요. 추천은 page.tsx는 얇게, UI는 _ui, 필터/정렬 pure function은 _lib, 복잡한 상태 제어는 _hooks로 분리하는 방식입니다.
마이페이지 page.tsx + _ui/MyProfileContent 구조라 멘토페이지와 방향은 비슷합니다. 다만 MyProfileContent 하나가 프로필, 퀵액션, 계정관리, 로그아웃/탈퇴까지 다 들고 있어서 큽니다. _ui/ProfileCard, _ui/QuickActions, _ui/AccountSection 정도로 쪼개면 좋습니다.
로그인
폼 중심 Client Page라 "use client"는 자연스럽습니다. 하지만 LoginContent.tsx가 route root에 있고 schema도 같은 파일 안에 있습니다. 멘토페이지 기준으로 맞추려면 ./_ui/LoginContent, ./_hooks/useInputHandler, ./_lib/schema 구조가 좋아요.
회원가입 / 멘토 신청
멀티스텝 flow라 page가 client가 되는 건 이해됩니다. 그래도 page.tsx가 상태와 화면을 너무 많이 알기보다는 ApplyMentorContent 같은 client entry를 _ui로 내리고, step 컴포넌트는 _ui/steps, schema는 _lib, step 상태 관리는 _hooks로 두는 게 좋습니다.
디스커션용으로 한 줄 요약하면:
멘토페이지처럼 page.tsx는 route entry로 얇게 유지하고, route 전용 UI/Hook/Lib은 _ui, _hooks, _lib에 colocate하는 방식으로 통일하면 좋겠습니다. 커뮤니티처럼 서버 prefetch/HydrationBoundary가 필요한 페이지는 그 패턴을 유지하되, 파일 배치만 멘토페이지 컨벤션에 맞추면 Next App Router에도 잘 맞고 유지보수성도 좋아질 것 같습니다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
현재 코드 컨벤션이 마땅히 없는 상황입니다.
특히 이전에 다른 분들이 작업해주신 코드를 제가 이어받기도 했고
또한 저 마저도 학습을 하다보니 매번 의사결정의 기준이 바뀌게 되었고 따라서 매번 바뀌는 컨벤션으로 인해서
AI를 활용할때 손해가 발생하는것 같습니다.
AI를 통해 컨벤션을 분석한 결과는 아래와 같습니다
전반적으로 next를 잘 사용할 수 있는 구조로 가는게 좋을 것 같다고 생각하는데 의견이 있으면 알려주시면 감사하겠습니다.
어드민 - 웹 - 대학 세개를 아우를 컨벤션을 만들어서 리뷰 및 개발 편의성 증진을 위함입니다.
페이지별로 보면 이렇게 정리할 수 있어요.
멘토페이지
가장 기준으로 삼기 좋은 형태예요.
page.tsx는 metadata, params, wrapper만 두고 실제 화면은./_ui아래로 내립니다. 화면 전용 hook은./_hooks, schema/util은./_lib에 둬서 route-local 컨벤션이 잘 보입니다. 다만MentorDetialContent같은 오타,Client/Content네이밍 기준은 정리하면 좋습니다.홈
Next에 꽤 잘 맞습니다. 서버 페이지에서 데이터를 가져오고,
_ui섹션 컴포넌트에 props로 내려요. 다만 독립적인 fetch는Promise.all로 병렬화하면 더 Next스럽습니다.커뮤니티
Next App Router 관점에서는 제일 진보된 편입니다. Server Component에서 React Query prefetch 후
HydrationBoundary로 넘기는 구조가 좋아요. 대신 route 내부 파일이CommunityPageContent.tsx,PostCards.tsx처럼 루트에 평평하게 있어서 멘토페이지 컨벤션과 다릅니다._ui,_hooks,_lib로 옮기면 통일감이 좋아집니다.지원 현황 / 성적 페이지
ScorePageContent,ScoreSearchBar,ScoreSheet등이 route root에 섞여 있습니다. 화면 상태, 필터링, 정렬 로직도 Content 안에 몰려 있어요. 추천은page.tsx는 얇게, UI는_ui, 필터/정렬 pure function은_lib, 복잡한 상태 제어는_hooks로 분리하는 방식입니다.마이페이지
page.tsx + _ui/MyProfileContent구조라 멘토페이지와 방향은 비슷합니다. 다만MyProfileContent하나가 프로필, 퀵액션, 계정관리, 로그아웃/탈퇴까지 다 들고 있어서 큽니다._ui/ProfileCard,_ui/QuickActions,_ui/AccountSection정도로 쪼개면 좋습니다.로그인
폼 중심 Client Page라
"use client"는 자연스럽습니다. 하지만LoginContent.tsx가 route root에 있고 schema도 같은 파일 안에 있습니다. 멘토페이지 기준으로 맞추려면./_ui/LoginContent,./_hooks/useInputHandler,./_lib/schema구조가 좋아요.회원가입 / 멘토 신청
멀티스텝 flow라 page가 client가 되는 건 이해됩니다. 그래도
page.tsx가 상태와 화면을 너무 많이 알기보다는ApplyMentorContent같은 client entry를_ui로 내리고, step 컴포넌트는_ui/steps, schema는_lib, step 상태 관리는_hooks로 두는 게 좋습니다.디스커션용으로 한 줄 요약하면:
Beta Was this translation helpful? Give feedback.
All reactions