def mininumTotal(self, t):
return reduce(lambda a,b:[f+min(d,e)for d,e,f in zip(a,a[1:],b)], t[::-1])[0]
์ ์ฝ๋๋ ํํ “์ฝ๋ ๊ณจํ”๋ผ๊ณ ๋ถ๋ฆฐ๋ค. ์ทจ๋ฏธ๋ก๋ ์ข์ ์ ์์ง๋ง “์ข์ ์ฝ๋”์๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ค.
๋ชจ๋๋ค ์ด๊ฒ์ด ์ข์ ์ฝ๋๊ฐ ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์๋ค. ์ค์ ์ ๊ณ์์๋ ๊ฐ์ฅ ๋์ ์ฝ๋ ์ค์ ํ๋๋ผ๊ณ ํ ์ ์๋ค.
๋ฐ๋๋ก ์๊ฐํด๋ณด๋ฉด ๊ฐ์ฅ ๋ช ํํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ค์ ๋ก ๊ฐ์ฅ ์ด๋ ค์ด ์ผ์ธ ๊ฒ์ด๋ค.
์๋์ด ์ํํธ์จ์ด ์์ง๋์ด์ ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํ๋ ๊ฒ์ด ์ํธ๋ฆฌ ๋ ๋ฒจ L3 ์์ง๋์ด์ ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ฝ๋ค๋ ๋ง์ด ์ดํด๊ฐ ๋ ๊ฒ์ด๋ค.
Clear code: the good and the bad
๋๋ ๋๊ฐ์ ํ์ผ๋ก๋ง ๊ตฌ์ฑ๋์ด์๋ ๋ณต์กํ ์คํ๊ฒํฐ ์ฝ๋๋ฅผ 30๊ฐ ์ด์์ diff๋ก ๋๋์ด ๊ตฌํํ์๋ค.
๊ตฌ์กฐํ๋ ์ฝ๋ ์กฐ๊ฐ์ธ ๊ฐ๊ฐ์ diff๋ ์ ๋๋์ด์์๋ค. ์ฝ๋๋ ์ ์ฌ์ ์์ ํฌํผ ํจ์ํ ํฌํผ ํ์ผ๋ก ๊น๋ํ๊ฒ ๋ถ๋ฆฌ๋์ด์์๋ค.
๊ฐ diff๋ ํฉ๋ฆฌ์ ์ธ ๋จ์ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๊ฐ์ง๊ณ ์์๋ค. ๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ๊ณผ ๋ช๋ช์ ๋ช ๋ฐฑํ ์ฃ์ง ์ผ์ด์ค๊ฐ ํฌํจ๋์๊ณ ์ด๋ ์ง๋์น๊ฒ ๊ณผํ์ง๋ ์์๋ค.
๊ฐ diff๋ ์ฌ๋ฌ๋ฒ์ ์ฝ๋ ์ ๋ฆฌ, ๋ฆฌํฉํ ๋ง, ๊ทธ ์ธ ๋ฑ๋ฑ์ ๊ณผ์ ์ ์ฌ๋ฌ๋ฒ ๊ฑฐ์ณค๋ค. ๋ช ํํ ์ฝ๋(clear code”)๋ฅผ ์์ฑํ๋ ๊ฒ์ ์์๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ๋ ธ๋ ฅ์ด ๋ค์๊ณ , ํนํ ํฐ ํ๋ก๊ทธ๋จ์์๋ ๋์ฑ ๊ทธ๋ฌ๋ค.
๊ฒฐ๊ณผ๋? ์ฝ๊ธฐ ์ฝ๊ณ ๋ช ํํ ๋ฐ์ดํฐ ๋ณด๊ฐ ๋ชจ๋์ด ์๋ฆ๋ต๊ฒ ์์ฑ๋์๋ค.
ํ์ง๋ง ๋งค๋์ ์ ์ด๊ฒ์ ๋ํด ์ด์ผ๊ธฐ๋ฅผ ํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
“์ด ์ฝ๋๊ฐ ์ผ๋ง๋ ๋ณต์กํ์๋์ง ์์ง๋ง, ์ฑ๊ณผ ๋ฆฌ๋ทฐ ์ธก๋ฉด์์๋ ์ด ์ฝ๋๋ ๋งค์ฐ ์ฌ์ํด ๋ณด์ฌ. ๋๋ฌด ์ฝ๊ณ ๋จ์ํด๋ณด์ฌ.
์ด ๋ชจ๋์ ๋ํ ๊ตฌํ ๋ฌธ์๋ฅผ ์์ฑํด์ ์ค์ ๋ก ์ด๊ฒ์ด ๊ฝค ๋ณต์กํ๋ค๋ ๊ฒ์ ์ฆ๋ช ํ ์ ์๋๋ก ํ๋๊ฒ์ ์ถ์ฒํด.”
์ฌ๊ธฐ๋ ์คํํธ์ ๋ ์๋๊ณ ์์ง๋์ด๋ง ๋ฌธํ์์ ์ ์๋ ค์ง ์ธ๊ณ์ ์ธ ํ์ฌ ์ค ํ๋์๋ค.
์ด์ ์ผ ์ ๋๊ธฐ์ ๋ค์ด ๋ง์ ๋ฌธ์๋ค์ ๊ฐ์ง๊ณ ์๋์ง ์ดํดํ๋ค. ๋ด๊ฐ ์ด ๋ฌธ์ ์ค ๋ฐ์ ์์ฑํ ํ์๊ฐ ์์์ง๋ง, ์์ฑ ํด์ผํ๋ค. ์๋๋ฉด ๋๋ ์๊ธ ์ธ์๊ณผ ์น์ง์ ์ํ์ผ๋๊น!
์ฌ๊ธฐ์ ํต์ฌ์ ์ข์ ์ฝ๋๋ ๋งค์ฐ ๋ช ํํ๊ณ ์ฝ๊ธฐ ์ฌ์ ๋ค๋ ๊ฒ์ด๋ค.
๋๋ฒ๊น ํ๋ ๊ฒ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ๋ณด๋ค ๋๋ฐฐ๋ ์ด๋ ต๋ค๋ผ๋ ์ ๋ช ํ ๋ง์ด ์๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ChatGPT๊ฐ ์ํฐ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ ๋, ์ค๋ฅ๋ฅผ ์ฐพ์๋ด๊ธฐ๋ณด๋ค ๋ค์ ์์ฒญํ๊ฑฐ๋ ์ฒ์๋ถํฐ ์ง์ ์์ฑํ๋ ๊ฒ์ด ๋ ์ฌ์ด ์ด์ ์ด๋ค.
์๋ฆฌํ ์ฝ๋๋ ์ฝ๊ธฐ ๋ ์ด๋ ต๊ณ ๋ํดํด ๋ณด์ธ๋ค.
๋ช ํํ ์ฝ๋๋ ์ฐ๊ธฐ ์ด๋ ต๊ณ ์ฌ์ ๋ณด์ธ๋ค.
Some other thoughts about clear code
- ๋ช
ํํ๊ณ , ์ฝ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ์ ๋ฅ์ํด์ง ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ช
ํํ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์๊ฒฉํ๊ฒ ๋ฐ๋ฅด๋ฉด์ ๋ง์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค.
- ๋ํ, ๊ฒฝํ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๋์ ์ฝ๋๋ฅผ ๊ผผ๊ผผํ๊ฒ ๋ฆฌ๋ทฐํด์ฃผ๋ ๊ฒ๋ ๋์์ด ๋์๋ค.
- ์ฒ์์ ๋ฌด์๋ฏธํด๋ณด์ด๋ ์คํ์ผ ๊ฐ์ด๋์ ๋ํ ์ ๋ง์ ์ฝ๋ฉํธ์ “nits”๋ฅผ ๋ฐ๋ ๊ฒ์ด ๊ณ ์ญ์ด์์ง๋ง, ๊ฒฐ๊ตญ์๋ ํฐ ๋์์ด ๋์๋ค.
- ๋ํ, ๊ฒฝํ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๋์ ์ฝ๋๋ฅผ ๊ผผ๊ผผํ๊ฒ ๋ฆฌ๋ทฐํด์ฃผ๋ ๊ฒ๋ ๋์์ด ๋์๋ค.
- ์ฝ๋ฉ ์คํ์ผ์ ๋ด๊ฐ ์์ํ๋ ๊ฒ ๋ณด๋ค ํจ์ฌ ์ค์ํ๋ค. ๋๋ ์ํํธ์จ์ด ์์ง๋์ด๋ง์ ์ ํ ์ค์ฌ์ ์ธ ๋ง์ธ๋์์ ์์ํ์ฌ ์ ์ฐจ “๊ธฐ์ ์ค์ฌ”์ ์ธ ๋ง์ธ๋๋ก ์ด๋ํ์๋ค.
- ๋๋ ์ฌ์ ์ ํผ์ ์์ํ๊ธฐ ์ํด ์ฝ๋ฉ์ ์์ํ๊ธฐ ๋๋ฌธ์, ์ฝ๋๋ฅผ ์ค์ง ๋๊ตฌ๋ก์จ๋ก๋ง ์ง์คํ๋ค. ๊ทธ ๊ฒฐ๊ณผ ์ ์ง๋ณด์๊ฐ ๋์ง ์์ ์๋ง์ธ ์ฝ๋๊ฐ ๋์๋ค.
- ๋ง์ ์ฝ๋ฉ ๊ฒฝํ์ ์๊ณ ํ ๋ด์์ ํจ๊ป ์ผํ๋ฉด์ ๋ช ํํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ์ฝ๋์ ์ค์์ฑ์ด ๋์ฑ ๋ถ๋ช ํด์ก๋ค.
- 1๋ ์ด์ ์ฝ๋ฉ์ ํด๋ณธ ์ฌ๋ ๋๊ตฌ๋ ๊นจ๋ซ๊ฒ ๋๋ ๋ช ๋ฐฑํ ์ฌ์ค์ด๋ค.
๐ฉ๐ป Opinion
๋๋ฒ์งธ ์งค์ ์ง์ง ๋๊ฐ..
์ฒ์ ์ทจ์ค ์์ , ์๊ณ ๋ฆฌ์ฆ์ ํ์ฐฝ ๊ณต๋ถํ ์์ ์๋ "์ฝ๋ ์งง๊ฒ ์ฐ๊ธฐ, ๋ด์ฅ ํจ์ ๋ค ๊ฐ๋ค ์ฐ๊ธฐ" ์ ์กฐ๊ธ ์ง์ฐฉ์ ํ๋ ๊ฒ ๊ฐ๋ค. ์ด๋ ค์ ๋ณด์ด๋ ์ฝ๋๊ฐ ๋์ ์ ๋ฌธ์ฑ์ ์ฌ๋ ค์ค๋ค๊ณ ์๊ฐํ๋ค. (์ค์ ๋ก ๊ทธ๋ด์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. ์ทจ์ค์ ์์ ์ ์ฌ๋ฌ ๋ฉ์๋๋ฅผ ํ์ฉํ๋ ๋ฅ๋ ฅ๋ ๋๋ณด์ด์ง ์์์๊น..)
ํ์ง๋ง 2๋ ์ฐจ ์กฐ๊ธ ์๋ ์ง๊ธ ๋๋ ๋๋ฒ์งธ ์งค์ ๊ฐ๊น๋ค ใ ใ ใ . ๋ณต์กํ ์ฝ๋๋ฅผ ๋ณด๋ฉด '๋๋ํ๋ค'๋ผ๋ ์๊ฐ๋ณด๋ค '์ฝ๊ณ ์ถ์ง ์๋ค'๋ผ๋ ์๊ฐ์ด ์ค๋ฉ์ค๋ฉ ๋ ๋ค.. ๊ทธ๋ฌ๋ฉด์ ๋์ ์ฝ๋๋ ๋ฐ์ฑํ๊ณ ์์ฆ์ ์ฝ๊ธฐ ์ฝ๊ฒ ์์ฑํ๊ธฐ์ ๋น ์ ธ์๋ค. ๊ทธ๋ฌ๋ค ์ฐพ์์จ ์ด ๊ธ! ๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฑ์ฅํ๊ณ ์๋ค๊ณ ๋๋๋ค :)
ํ์ฌ์์๋ ์ฝ๋ ๋ด์์ ๋์ ์ ๋ฌธ์ฑ(?์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค ์ด์ ..)์ ๊ฐ์กฐํ๋ ๊ฒ์ด ๊ณผ์ฐ ์ข์๊น?
๋๊ตฐ๊ฐ๊ฐ ๋์ ์ฝ๋๋ฅผ ์ฝ๊ณ ์ฝ๊ธฐ๋ฅผ ํฌ๊ธฐํ๊ฑฐ๋, ์ดํด๊ฐ ์ด๋ ค์ ๋๋ฅผ ๊ผญ ์ฐพ๊ฒ๋๋ค๋ฉด ํ์ ํจ์จ์ฑ์ด ํ์ฐํ ๋ฎ์์ง ๊ฒ์ด๋ค.
'๐ Study > TLDR' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[WebDev] Things You Should Never Do As A Software Engineer (0) | 2024.05.25 |
---|---|
[WebDev] How not to do code reviews (0) | 2024.05.19 |
[WebDev] You probably donโt need microservices (0) | 2024.05.19 |