๋น๊ทผ๋ง์ผ ํด๋ก ๋์์ธ
![๊ณผ๊ฑฐ์ '๋น๊ทผ๋ง์ผ' ์์ ์ ํด๋ก ๋์์ธ](https://lh3.googleusercontent.com/pw/ABLVV87QDKifHDjJtOQQQlHYCch-8hCBSK_n9YI_Z44c9M9lboCZXR2FYI0jQnmZpUd6fXxynIWhmTbfSj-JXeoewBPlvLSpiGDR88_5NOQ6mIdAOesMKjIukcGr8tSqsFYuMHeHTlqm3y7reO8Q6joevQ8S=w2700-h1518-s-no-gm?authuser=0)
![](https://lh3.googleusercontent.com/pw/ABLVV85_hpxcA-gm2--UeJkDMtnZClJxv6Kg-7A5Tbn3127lUjwNi8liTeUYVU8gKhv2N-Nk5zsO8LoV3fNsfWTv4JKZ3QkCK2Bwry_nDVasB_-_VC34kT1WrH5PmjRRQciMtPJJVHeqela-iQOxdDU-U_tr=w2700-h1518-s-no-gm?authuser=0)
![](https://lh3.googleusercontent.com/pw/ABLVV85QEVL0k1EIVVqItVcsbBNQeLnA3MCaltjRHsJVzBfGTvClcKZi_RO__AQXVA-Y6jLN3TBY84d4mBw7U0JSo76WTfrZdF_LnwR4LRTsUoNCzi7jdNo-lt7WTEmyECdGzG2BUFENeK3zUsl00kQTjb4y=w2700-h1518-s-no-gm?authuser=0)
![](https://lh3.googleusercontent.com/pw/ABLVV853ut-6tfOQTrMfl0x3oCmZ8eSLBw4H7BWStLUzR9qU97bSwKOS82tFaUU2gsPxWChEjZ9Y8i56Qh_ATj1NAzw16wCqHl_kSKOaMuMv_YozXE_K7D8d68ft3b3DvKaz7PfR11etjcACUdkaNFIQ-V26=w1508-h1896-s-no-gm?authuser=0)
![](https://lh3.googleusercontent.com/pw/ABLVV87tWAaFb_CBX6caFVdL14qdV_UYoUF71nHY7fxjCxUHS5Y0dpZiNf-6AbchsRyr_F8tEen9RvC9CGAUyYt1v48gU8I8QkkVu68DKXjzqNETwETtgzzxxNtH_cX_jhGtgMDP1XwZdVJVf-qkOtzNxlPj=w1950-h1896-s-no-gm?authuser=0)
![](https://lh3.googleusercontent.com/pw/ABLVV85mX90i1LfxoyILZJQjnMuC_vtQ9NPqt4yLsysFVgnsKPCSUfp5oHbDDx8elU81lfQHRneDKfYzwsSZL1i5DMdIWfWcWQ1Jqw-KOvbKJzVt8IuZcAOhbXTQlQIpLfEIFg7IPm1bcKXJrsHhlQpEEZvV=w2700-h1518-s-no-gm?authuser=0)
![](https://lh3.googleusercontent.com/pw/ABLVV85VXmU9EQ6zPlIBpq3Cl-fqM93MYc4Sf564R__aaCICmYg9HIlt2AFc-sYPhn7MYM3NuRa6B8pnhLeui9loZe8v_75ZZCG1hMbUyVOCDhQpTgvDEGj9stHIZpXmXJ7yGa8cuCVOlVK8F8gx1wHkmyVw=w2700-h1518-s-no-gm?authuser=0)
![](https://postfiles.pstatic.net/MjAyNDAyMDZfMTA0/MDAxNzA3MjE1MzE5NzE0.pmY-2_OBk33ySgpRHQs3oj1jEz-z0lmVVCKHH0OkZYAg.A25yEWDDfE-3GscobZm3UcCPKOIU6IPPe15LjpwPFWIg.PNG.1-666-yours-truly/8.png?type=w966)
โ
![](https://postfiles.pstatic.net/MjAyNDAyMDZfNzQg/MDAxNzA3MjE4MzYzNjUz.LsfmKOD20MjRfaQahSo8j_DrSn1CaGsvGOc0Flow08Ig.ehXQ-ok6KbvFm2GTilJZwkaGzUn53NrfK2sQbtAmLdwg.PNG.1-666-yours-truly/image.png?type=w80_blur)
![](https://postfiles.pstatic.net/MjAyNDAyMDZfMjYw/MDAxNzA3MjE4MDM4OTQx.G4RJ9LC4wxkTp-jLFHJpTaHhjdM2-UZ8TEZYKHg4ECwg.BLDphj9kaWLCGCGeXfAKL8GD9LI74Dh_kMTBBmlyNkcg.PNG.1-666-yours-truly/image.png?type=w80_blur)
![](https://postfiles.pstatic.net/MjAyNDAyMDZfNTQg/MDAxNzA3MjE5MTc1MTUw.9MQf41fcSungXEcL6WKLVZU2BCQJ44U6NbrI-cYuIl0g.mWgqqb79dWhgEzjNWR950sjylOxNV-oBFK07o4nHmy4g.PNG.1-666-yours-truly/image.png?type=w80_blur)
๋ณธ๊ฒฉ์ ์ธ ์์์ 3~4์ผ ์ ์ฏค์ด์๋ ๊ฒ ๊ฐ๋ค. ํ ํ์ด์ง๋ฅผ ๋๋ด๊ณ ๋ค๋ฅธ ํ์ด์ง๋ก ๋์ด๊ฐ๋๋ฐ ๋๊ฐ์ด ๋ฐ๋ณต๋๋ ๊ณตํต์ ์ธ ๋ถ๋ถ์ ๋ค๋ฆ๊ฒ ๋ฐ๊ฒฌํ๊ณ , ๋นจ๋ฆฌํ๊ธฐ์ํด ๋์ถฉ ๋ง๋ Rectangle ๊ทธ๋ฃน์ ํ๊ณ ๋ค์ ์ฌ์ฌ์ฉ/ํ์ฅ๊ฐ๋ฅํ frame๊ณผ ์คํ ๋ ์ด์์์ผ๋ก ๊ธฐ๋ณธ๋ชจ๋ํํ๋ฅผ ๋ง๋ค๊ณ ์ปดํฌ๋ํธํ, ์์ง ์ต์ํ์ง ์์ ์คํ ๋ ์ด์์์ ์ ์ฉํ๋ค๋ณด๋ ํนํ ์๊ฐ์ด ๋ ์ค๋๊ฑธ๋ ธ๋ค. ์์ฑ๋ง ํ๋๊ฑด ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํด์.... (๋ฌผ๋ก ๊ฐ์ ์ก์ผ๋ฉด ์ฌ์ด๋ฐ html/css๋ฅผ ์ ๋๋ก ํด๋ณธ์ ์ ์์ง๋ง align์ด๋ padding, margin, float ๊ฐ์ ์์ฑ์ ์ฌ์ฉ๋ฒ์ ๋ชจ๋ฅด๋ ์ํ๋ก ์ผ๋จ ํด๋ณด๋ค๊ฐ ์๋ฑํ์์น๋ก ๊ฐ์ ธ์ ์ด๋ฐ์๋ ๊ธฐ์ต์ด ๋ฌ๋ค)
โ
๊ทผ๋ฐ ํ๋ค๋ณด๋๊น ์คํ ๋ ์ด์์์ด ํ์คํ ์์ ๋ถ์๋ค. Boolean๋ ์ฐ๊ณ ์ถ์๋๋ฐ ์์ง ๊ณต๋ถ๋ฅผ ์ํด์ ๋ ์ด์ด์์ ๋๋ง ๊ป๋ค์ผฐ๋คํด๋ฒ๋ฆฐ..
โ
๊ทธ ์ธ ๋ฌด๋ฃ์์ด์ฝ ํ๋ฌ๊ทธ์ธ์์ ์ ํฉํ ์์ด์ฝ ์ฐพ๋๊ฒ๋ ์๊ทผํ ์๊ฐ์ด ๊ฑธ๋ ค์ ๊ทธ๋ฅ ๊ทธ๋ ค๋ฒ๋ฆฐ ์๊ฐ ๋ฑ๋ฑ.. 36์๊ฐ์ ๋ ๊ฑธ๋ฆฐ๊ฑฐ๊ฐ์๋ฐ ๋์ค์๋ ๋ ๋นจ๋ผ์ง๊ฒ ์ง
โ
์์ด์ฝ ๊ทธ๋ฆฌ๋ ๊ณผ์ ์์ ์ ์๋ฏธํ ์ฐ์ด ์๊ฒผ๋๋ฐ ํผ๊ทธ๋ง ํ์ด ๋ต๋ตํด์ ์ผ๋ฌ์คํธ๋ ์ดํฐ ์ค๋ธ์ ํธ Shift+M ์ผ๋ก ๋ชจ๋ ๊ฒ์ ํด๊ฒฐํ๋ ค๊ณ ํ๋๋ฐ ๊ทธ๋ ๊ฒ๋๋ฉด ๋ฉด๋ง ๋จ์์ vector์ ์ ๊ตต๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๊ฒ ๋๋ฒ๋ฆฐ๋ค (๋ฉด ์์ด์ฝ์ ํฌ๊ธฐ๋ฅผ ์ถ์ํ ์๋ก ๋ฑ๋ฑํด์ ธ๋ฒ๋ฆฐ๋ค) ์ผ๋ฌ๋ก ํผ๊ทธ๋ง ์์ด์ฝ์ ๊ทธ๋ฆด๋๋ ๋ฌด์กฐ๊ฑด ์ ์ผ๋ก ๊ทธ๋ ค์ผํ๋ค ^^!
๋๋ถ์ ๋ชจ๋ ์์ด์ฝ์์ ์๊ณผ ๋ค๊ฐํ์ ์๋ณํ๊ณ ํผ๊ทธ๋ง์์ ๋ง๋๋ ๋ฅ๋ ฅ์ด ์์ง์์นํ์๋ค ^^
โ
๋ ๋ ์ด์ด ํญ๋ชฉ๋ณ ์ด๋ฆ์ ์ด๋ป๊ฒ ์ง์ ํด์ผ ์ข์์ง...๋ฌด๋ฃ์์ด์ฝ์ ์ฌ์ฉํ๋ค๋ฉด ๊ทธ ์์ด์ฝ๋ค์ ์ด๋ฆ์ ๊ทธ๋๋ก ์ฐ๋์ง ์๋๋ฉด ๋ด๋ถ์์ ๋ฐ๋ก ์ ๋ฆฌํ๋์ง... ใ
ใ
๊ทธ๋ฐ๊ฑธ ๋ชฐ๋ผ์ ๋ต๋ตํ๋ค
โ
โ
โ
[![](https://dthumb-phinf.pstatic.net/?src=%22https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FGEg89DDXsAA8DC-.jpg%3Alarge%22&type=ff500_300)](https://x.com/TkDodo/status/1749717832642736184?s=20)[
**X์ Dominik ๐ฎ๋(@TkDodo)**
components / hooks / types / utils (and constants) is the split I'm seeing in many codebases, yet it's the one I dislike the most. It groups by type, not by domain. "useTheme" will live next to "useTodo", but not next to ThemeProvider ... why?
x.com
](https://x.com/TkDodo/status/1749717832642736184?s=20)
์ด๊ฑด ์ผ๋ง ์ ์ ๋ณธ React ์ฝ๋๋ฒ ์ด์ค์์ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ๋ถ๋ฅํ๊ณ ๊ด๋ฆฌํด์ผํ๋์ง์ ๋ํ ๊ถ๊ณ ์ธ๋ฐ ๋์ผ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฅํ๋๊ฒ ์๋ ๋๋ฉ์ธ์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฅํ๋ฉด ์ข๋ค๋ ์ ์ด ์ธ์๊น์ด์ ์ฒจ๋ถ