Clean Code ¶
- CleanCode book
- CleanCoders
- ์ฉ๋ค ์ด๋ฐ๋ฐ๊ฐ ์๋ค์. ์๊ฒฝ๋ผ๊ณ ์๊ฐ๋ฝ์ง ํ๋ ๋ถ ์ํด ๋ฐฅ ๊ฐ์ผ์ ๋ฐ..? - ์์งํ
- ์ฉ๋ค ์ด๋ฐ๋ฐ๊ฐ ์๋ค์. ์๊ฒฝ๋ผ๊ณ ์๊ฐ๋ฝ์ง ํ๋ ๋ถ ์ํด ๋ฐฅ ๊ฐ์ผ์ ๋ฐ..? - ์์งํ
- Google Code Review System
- google coding style guide
- Martin Fowler์ refactoring home
- Express names in code: Bad vs Clean
- git ์ฌ์ฉ๊ณผ ๊ด๋ จ๋ pro git์ด๋ผ๋ ์ฑ
์ ํ๊ตญ์ด ๋ฒ์ญ๋ณธ. ์๋นํ ์์ธํ ๋์ ์๋ค๊ณ ํ๋ค์
5์ 4์ผ ¶
- ์คํฐ๋ ํฅ์คํ
- ๋์ : Clean Code
- ์์งํ์ my-calculator ์ฝ๋๋ฅผ ํผ์ด ๋ฆฌ๋ทฐํจ.
5์ 11์ผ ¶
- Clean Code ์ฝ์ ๋ถ๋ถ์ ๋ํด ํ ๋ก (Chap 01, Chap 09)
- Chapter 2 Meaningful Names - Naming Convention
- ํด๋์ค์ ์ด๋ฆ์ ์ง์ ๋๋ -info, -data์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ด๋ฆ์ ์ฐ์ง ๋ง๋ผ.
- Account๋ฅผ ๋ง๋ค๋ฉด ๋์ง AccountInfo๋ผ๋ ํด๋์ค๋ฅผ ๋ง๋ค ํ์๋ ์๋ค. Account ํด๋์ค ๋ด๋ถ์ ๋ค์ด๊ฐ๋ ์ ๋ณด๊ฐ Info๋๊น.
- -List ๋ผ๋ ์์ ์ด๋ฆ์ ์ง์ ๋๋ ์ ๋ง๋ก List์ API๋ค์ ์ง์ํ ๋์๋ง -List๋ผ๊ณ ๋ถ์ฌ์ฃผ๋๊ฒ์ด ์ข๋ค. ์ด๋ฆ์ ์ ๋ ๊ฒ ์ง์ผ๋ฉด -List์ API๋ค์ ์ง์ํ ๊ฒ ๊ฐ์ ๋๋์ด ๋ค๊ธฐ ๋๋ฌธ์ ์๋ ๊ฒฝ์ฐ์๋ -s๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํ๋๊ฒ ์ข์ ๊ฒ.
- ์๋์ ๊ฐ์ ์์ผ๋ก Account๋ด๋ถ์ ์ ๋ณด๋ฅผ ํ๋๋ก ๋ฌถ์ผ๋ฉด AccountInfo ํด๋์ค์ getAccountInfo()๋ฑ์ด ์์๋ฒํ์ง ์์๊ฐ? -> ์ ๋ฐ ๊ตฌ์กฐ ์์ฒด๊ฐ ์๋ชป๋์ ์ ์๋ค. getAccountInfo()์ ๊ฐ์ ๋ฐฉ๋ฒ์ด ์๋๋ผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ผ์ ์ํค๋ ๋ชจ์์ด ๋ ๋ซ๋ค.
- ํด๋์ค์ ์ด๋ฆ์ ์ง์ ๋๋ -info, -data์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ด๋ฆ์ ์ฐ์ง ๋ง๋ผ.
- Chapter 2 Meaningful Names - Naming Convention
Class Account { private AccountInfo info; };
- Chapter 9 Unit Tests
- ๋ฌธ์ ๋ฅผ ๋ค์์ ๋ ํ
์คํธ์ฝ๋๋ฅผ ๋จผ์ ์๊ฐํ๋ ์ต๊ด์ ๋ค์ฌ์ผ ํ ๊ฒ ๊ฐ๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฝ๋๋ฅผ ๋จผ์ ์ง๋ ค๊ณ ํ๋ฉด ๊ฒฐ๊ตญ ํ
์คํธ์ฝ๋ ์์ฑ์ด ์๋๋ผ ์ง์ ํ
์คํธ๋ฅผ ํ๊ฒ ๋๋ ๋ฏ ํ๋ค.
- ํผ๋๋ฐฑ์ ๋นจ๋ฆฌ ๋ฐ๊ธฐ ์ํด์ ํ
์คํธ๋ฅผ ์ค์. ํผ๋๋ฐฑ์ ๋ฐ๊ณ ๊ณ ์น ๋๊น์ง์ ์ฃผ๊ธฐ๊ฐ ์งง์์ผ ํจ. ์ฝ๋๋ฅผ ์ง๊ณ ์ ๋ํ
์คํธ๋ฅผ ๋ง๋๋ ๊ฒ๋ ์๋๋๊ฑด ์๋. ํผ๋๋ฐฑ์ ๋ฐ๋ก ๋ฐ์ ์ ์์ผ๋ฉด ๋จ.
- ์ฝ๋๋ฅผ ๊นจ๋ํ๊ฒ ํ๊ณ ์ถ์ผ๋ฉด ํ
์คํธ ์ฝ๋๋ ๊นจ๋ํ๊ฒ ์ ์งํด์ผ ํ๋ค. ํ
์คํธ ์ฝ๋๊ฐ ๋๋ฌ์์ง๋ฉด ํ
์คํธ๋ฅผ ์ ์ํ๊ฒ ๋๋๊น ์ฝ๋๋ ๋๋ฌ์์ง๊ฒ ๋๋ค.
- ํ
์คํธ ์์๋ ์ฌ๋ฐ๋ฅธ input์ด ์ ๋๋ก ๋ค์ด์ค๋์ง๋ฅผ ๋จผ์ ํ์ธํ๊ณ ๋์ ์ฝ๋๊ฐ ์๋ชป๋์๋์ง ์๊ฐํด๋ณผ ๊ฒ.
- ์ค์ ๋ก๋ ์ฐ์ง ์๋๋ฐ ํ
์คํธ๋ฅผ ์ํ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์์ง ์์๊ฐ? -> java์ ๊ฒฝ์ฐ๋ reflection์ ์ฌ์ฉํ๋ฉด ๋ฉ์๋์ ์ถ๊ฐ ์์ด ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ ์์ง๋ง ๊ทธ๊ฒ๋ณด๋ค๋ ํ
์คํธ์ฉ framework(mockito ๋ฑ)๋ฅผ ์ฌ์ฉํ๋๊ฒ์ด ์ข๋ค.
- BDD, Given/When/Then
- ๋ฌธ์ ๋ฅผ ๋ค์์ ๋ ํ
์คํธ์ฝ๋๋ฅผ ๋จผ์ ์๊ฐํ๋ ์ต๊ด์ ๋ค์ฌ์ผ ํ ๊ฒ ๊ฐ๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฝ๋๋ฅผ ๋จผ์ ์ง๋ ค๊ณ ํ๋ฉด ๊ฒฐ๊ตญ ํ
์คํธ์ฝ๋ ์์ฑ์ด ์๋๋ผ ์ง์ ํ
์คํธ๋ฅผ ํ๊ฒ ๋๋ ๋ฏ ํ๋ค.
- gerrit ์ค์น
- ์ฐธ๊ณ ๋ฐ๋ชจ ๋์์
- ๋ฒ์ ๊ด๋ฆฌ๊ฐ ํ์ํ ์ด์ ๋ฅผ ๊นจ๋ซ๋ ์ด๋ค ์ฌ๋
- gerrit install guide
- ์์๋ ์ข ๋ค๋ฅธ ์ฐธ๊ณ ์ฌ์ดํธ - ์ด์ชฝ์ด ์ ์ฒด์ ์ธ ํ๋ฆ์ด๋ ์ํ์น ์ค์ ๊ด๋ จ์ ์ข ๋ ๋ณด๊ธฐ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค.
- Gerrit๊ธฐ๋์์ใ** ERROR: GERRIT_SITE not setใ
- ํใ
ใ
ใ
๋ฒ์ญํ๋๊น ์ธ์คํ ๋ฃจ๋๋ ์ฟ ํ ๋ฆฌ๋ก ๋์จ๋ผใ
ใ
ใ
์ ๊ทธ๋ฅ ํ๊ฒฝ๋ณ์ ์ค์ ํด๋ฒ๋ ธ์ต๋๋ค. ์ ๋๊ฒฝ๋ก ์ฐ๋ค๊ฐ ๋ฒ ์ด์ค ๋๋ ํ ๋ฆฌ ํ๋ฒ ๋ ๋ ค๋จน๊ณ ๊ฐ๋ฅํ๋ฉด ํผํด๋ฒ์ ์ ๋๋ก ๊ฒฝ๋ก ์ด๋ํด์ ์กฐ์ํ๊ฑฐ๋ ์. - ์์งํ
- ํใ
ใ
ใ
๋ฒ์ญํ๋๊น ์ธ์คํ ๋ฃจ๋๋ ์ฟ ํ ๋ฆฌ๋ก ๋์จ๋ผใ
ใ
ใ
์ ๊ทธ๋ฅ ํ๊ฒฝ๋ณ์ ์ค์ ํด๋ฒ๋ ธ์ต๋๋ค. ์ ๋๊ฒฝ๋ก ์ฐ๋ค๊ฐ ๋ฒ ์ด์ค ๋๋ ํ ๋ฆฌ ํ๋ฒ ๋ ๋ ค๋จน๊ณ ๊ฐ๋ฅํ๋ฉด ํผํด๋ฒ์ ์ ๋๋ก ๊ฒฝ๋ก ์ด๋ํด์ ์กฐ์ํ๊ฑฐ๋ ์. - ์์งํ
- ์ฐธ๊ณ ๋ฐ๋ชจ ๋์์
- next : git๊ณผ ์ฐ๋
- Git + Gerrit + Jenkins ์ ์ฒด ๊ฒฐํฉ์ ํตํด ์ฝ๋ ๋ฒ๊ทธ๋ฅผ ์ค์ฌ๋ณด์
5์ 18์ผ ¶
- ํจ์
- ํ๋๊ทธ๋ ์ถํ๋ค
- guard clause๋ฅผ ์ฐ์ธ์!
- ํจ์๋ ํ๋์ ์ผ์ ํ๋๊ฒ ์ข๋ค๊ณ ํ๋๋ฐ ํ๋๊ทธ๋ฅผ ์ด๋ค๋ ๊ฒ์ ํจ์๊ฐ ํ๋๊ทธ์ ๊ฐ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๊ฐ์ ํ๋ค๊ณ ๋งํ๋ ๊ฒ์ด๋ฏ๋ก.
- ์ฐจ๋ผ๋ฆฌ ๋ค๋ฅธ ์ผ์ ํ๋ ํจ์๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋๋๊ฒ ๋ ๋ซ๋ค.
- guard clause๋ฅผ ์ฐ์ธ์!
- abstraction level
- String.append์ PathParser.render๋ ๋์ด ์๋ก ๋ฌธ์์ด์ ํฉ์น๋ ์์
์ ํ๋๋ผ๋ ์ง์ ์ ์ธ ์ฐ์ฐ์ ํ๋ ๊ฒ๊ณผ ์ถ์์ ์ธ ์ฐ์ฐ์ ํ๋ ๊ฒ์ ์ฐจ์ด๋ก ์๋ก ์ถ์ํ ์์ค์ด ๋ค๋ฅด๋ค๊ณ ํ ์ ์๋ค.
- ์ถ์ํ ์์ค์ด ์๋ก ๋ค๋ฅธ ์ฝ๋๊ฐ ์์ฌ์์ผ๋ฉด ๋ณด๊ธฐ์๋ ์ข์ง ์๋ค.
- ์ถ์ํ ๋ ๋ฒจ์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ ๋ง๊ธฐ ์ํด์๋ ์ฝ๋๋ฅผ ์งง๊ฒ ํ๊ณ ๋ฉ์๋๋ก ๋ง์ด ๋๋๋ฉด ํ ์ฝ๋ ๋ด์์ ์ถ์ํ ๋ ๋ฒจ์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ ๋ง์ ์ ์๋ค.
- String.append์ PathParser.render๋ ๋์ด ์๋ก ๋ฌธ์์ด์ ํฉ์น๋ ์์
์ ํ๋๋ผ๋ ์ง์ ์ ์ธ ์ฐ์ฐ์ ํ๋ ๊ฒ๊ณผ ์ถ์์ ์ธ ์ฐ์ฐ์ ํ๋ ๊ฒ์ ์ฐจ์ด๋ก ์๋ก ์ถ์ํ ์์ค์ด ๋ค๋ฅด๋ค๊ณ ํ ์ ์๋ค.
- ํจ์ ์ธ์๋ ์ ์์๋ก ์ข๋ค.
- ํจ์ ์ธ์๊ฐ ๋ง์์ง๊ฒ ๋๋ฉด ์ฌ์ฉ์๊ฐ ์ธ์๋ค์ ๋ํด์ ์ดํด๋ฅผ ํ๊ธฐ ํ๋ค๋ค.
- ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ธ์๋ค์ ์กฐํฉ ์์ ๋ฐ๋ผ ํ
์คํธ ์ผ์ด์ค๊ฐ ๋์ด๋ ์ ์๊ธฐ ๋๋ฌธ์.
- ํจ์ ์ธ์๊ฐ ๋ง์์ง๊ฒ ๋๋ฉด ์ฌ์ฉ์๊ฐ ์ธ์๋ค์ ๋ํด์ ์ดํด๋ฅผ ํ๊ธฐ ํ๋ค๋ค.
- ํ๋๊ทธ๋ ์ถํ๋ค
- Error Handling
- ์๋ฌ๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋, ์ฒ๋ฆฌํ๋ ์ฝ๋ ๋๋ฌธ์ ํจ์์ ๋ณธ ์๋ฌด๋ฅผ ํ์
ํ๊ธฐ ํ๋ค๊ฒ ๋๋ฉด ์๋ฉ๋๋ค.
- Consider using try-catch-finally instead of if statement.
- Don't return null.
- Returning null or undefined (Javascript)
var array = stringObject.match(/regexp/); // if there is no match, then the function returns null, if not returns array. if(!array){ // handle and return } array.forEach(/* handle found strings */) ...
- Returning emtpy object (Javascript)
var array = stringObject.match(/regexp/) || []; // if the function returns null, then substitute empty array. array.forEach(/* handle found strings */) /* You can handle empty array with "array.length === 0" statement in anywhere after array is set. */
- Returning null or undefined (Javascript)
- Don't pass null.
- ์๋ฌ๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋, ์ฒ๋ฆฌํ๋ ์ฝ๋ ๋๋ฌธ์ ํจ์์ ๋ณธ ์๋ฌด๋ฅผ ํ์
ํ๊ธฐ ํ๋ค๊ฒ ๋๋ฉด ์๋ฉ๋๋ค.
ํ๊ธฐ ¶
- ๋ฏผ๊ด
- + : ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ํด๋ด์ ์ข์๋ค. ํ์ดํธ๋ณด๋์ ์ ์ด๊ฐ๋ฉด์ ์ฝ์ด๋ณธ ๋ถ๋ถ ๊ณต์ ํ๋๊น ์ ๋ฆฌ๋ ๋๋.
- - : ํ๋ก์ ํธ ๋ฐฉ์๊ณผ ๋ฐฉํฅ์ด ํ๋ฆฟํ ๋๋์ด๋ค.
- F : ์๊ฐ์ ์ปดํฉํธํ๊ฒ ์งํํ๊ณ ์ถ๋ค. ๋์ด์ง๋ ๊ฒฝํฅ์ด ์๋ค.
- + : ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ํด๋ด์ ์ข์๋ค. ํ์ดํธ๋ณด๋์ ์ ์ด๊ฐ๋ฉด์ ์ฝ์ด๋ณธ ๋ถ๋ถ ๊ณต์ ํ๋๊น ์ ๋ฆฌ๋ ๋๋.
- ์ง๊ฒฝ
- + : ๋ฆฌํฉํ ๋ง์ ์๋ํด๋ณด์๋ค. ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋ง ํ ์ ์๋ค๋ ์๊ฐ์ ํ๊ฒ ๋์๋ค.
- - : ๋ณธ์ธ์ ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐ๋ฐ๊ณ ์ถ์๋๋ฐ ์ ๋ฆฌ๊ฐ ๋์ง ์์ ๋ฐ์ง ๋ชปํ๋ค.
- F : ์ฃผ์ค์๋ ์คํฐ๋๋ฅผ! ์จ๋ผ์ธ ํ์
ํด์ ์ด์ฉํ ์ ์๋ค.
- + : ๋ฆฌํฉํ ๋ง์ ์๋ํด๋ณด์๋ค. ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋ง ํ ์ ์๋ค๋ ์๊ฐ์ ํ๊ฒ ๋์๋ค.
- ์์ฃผ
- + : ์ฑ
์๊ธฐ๋ง ํ๊ฒ ์๋๋ผ ์ฑ
์ ์์ ๋ฅผ ์๋ํด๋ดค๋ค.
- - : ๊ฐ์ ์์ ๋ฅผ ๋ฆฌํฉํ ๋งํ๋ค. ๋ฐ๋ก ๋
ผ ๋๋.
- ์ฌ์ค ๊ทธ๋ฐ ๋๋์ด ๋ค์ด๋ ๊ฒฐ๊ตญ ์ฝ๋ ์ง๋ ๋ถ๋ถ์ ๋ฐ๋ก ํ ์๋ฐ์ ์๋ ๊ฒ ๊ฐ์ผ๋ ์ด์ฉ ์ ์๋ ๊ฒ ๊ฐ๊ธฐ๋ ํ์ง๋ง์. - ์์์ฃผ
- ์ฌ์ค ๊ทธ๋ฐ ๋๋์ด ๋ค์ด๋ ๊ฒฐ๊ตญ ์ฝ๋ ์ง๋ ๋ถ๋ถ์ ๋ฐ๋ก ํ ์๋ฐ์ ์๋ ๊ฒ ๊ฐ์ผ๋ ์ด์ฉ ์ ์๋ ๊ฒ ๊ฐ๊ธฐ๋ ํ์ง๋ง์. - ์์์ฃผ
- F : ์คํฐ๋๋ฅผ ์ ๋๋ก ํ๊ณ ์๋์ง ์๊ณ ์ถ๋ค. (๋ฉํ ๊ฐ ์์์ผ๋ฉด ์ข๊ฒ ๋ค?)
- ์ฝ์นญ์ ๋ฐ๊ณ ์ถ๋ค๋ ๋ง์ธ๋ฏ - ์์งํ
- ๊ฐ๋ฅด์ณ์ฃผ๋ ๊ฒ ๊น์ง๋ ์๋๊ณ ์ ํ๊ณ ์๋๊ฑด์ง ์๋์ง๋ฅผ ์ ์ ์์์ผ๋ฉด ์ข๊ฒ ๋ค๋๊ฑฐ์ฃ . ๋ชฉํ ์๊ธฐ ํ์ ๊ฑด ํ์คํ ์ ๋๋ก ํ๊ณ ์๋์ง ์ฐธ๊ณ ๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค. - ์์์ฃผ
- ๋ค ๊ทธ๋์ ์ผ๋ถ๋ฌ ์ฝ์นญ์ด๋ผ๊ณ ์ผ์ด์ใ
ใ
๋ฉํ ๋ง์ ์๋ ๊ฒ ๊ฐ๊ณ ํฐ์นญ์ ์ง์ํ๊ณ ์ถ๊ณ , ์คํฐ๋๊ฐ ์ ๋์ด๊ฐ๊ณ ์๋์ง๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ ๋งฅ๋ฝ์์ ์ฝ์นญ์ด ์ ์ผ ์ ์ฌํ ๊ฒ๊ฐ์์๋ฆฌ.. - ์์งํ
- ์ฝ์นญ์ ๋ฐ๊ณ ์ถ๋ค๋ ๋ง์ธ๋ฏ - ์์งํ
- + : ์ฑ
์๊ธฐ๋ง ํ๊ฒ ์๋๋ผ ์ฑ
์ ์์ ๋ฅผ ์๋ํด๋ดค๋ค.
- ํฌ์
- + : ์ฒ์ ๋์ฌ๋ ๋จ๋ ธ๋๋ฐ ๋ง์ด ์ ๊ฒฝ ์จ ์ค์ ์ข์๋ค.
- - : ๋ฐฐ๊ฒฝ์ง์์ด ๋ถ์กฑํ ๋ฏ ํ๋ค.
- F : ์คํฐ๋์ค์ ์ด๋ป๊ฒ ์งํํด์ผ ํ๋์ ๋ํ ์๊ธฐ๋ฅผ ๋๋ฌด ๋ง์ด ํ๋ค.
- + : ์ฒ์ ๋์ฌ๋ ๋จ๋ ธ๋๋ฐ ๋ง์ด ์ ๊ฒฝ ์จ ์ค์ ์ข์๋ค.
- ์งํ
- + : ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ฆฌํฉํ ๋ง ํ๋ ๊ฒ์ ๋ณด์๋ค. ์๋ก์ด ์ฌ๋ ์ถ๊ฐ
- - : ๋ฆฌํฉํ ๋ง์ ํ ๋ ๋ฆฌํฉํ ๋ง์ ๋ํ ์๊ตฌ์ฌํญ, ๋ฆฌํฉํ ๋ง์ ๋ฉ์ถ ์ ์๋ ์์ค์ ์ ์ํ์ง ๋ชปํ์๋ค.
- '์ด๊ฒ'์ ์ ์ํ ์๊ฐ ์๋?
- '์ด๊ฒ'์ ์ ์ํ ์๊ฐ ์๋?
- F : ์คํฐ๋ ์ฒซ๋ ์ ํ๋ ๊ฐ์์ ๋ชฉ์ ๊ณผ ๋ชฉํ(์ด๋๊ฐ์ง?)๋ฅผ ํตํด ์คํฐ๋๊ฐ ์ ๋๋ก ์งํ๋์ด ๊ฐ๊ณ ์๋์ง ์ฒดํฌํ ์ ์์๊ฒ.
- ๊ทธ๋ฌ๋ ์์ ์ ์ค๋ ฅ์ด ๋ ๋์์ ์ด๋ป๊ฒ ๋น๊ตํ ์ ์์๊น? ํ์ต ๊ณก์ ๋ ๋ฌด์ํ ์ ์๋ค.
- ๊ทธ๋ฌ๋ ์์ ์ ์ค๋ ฅ์ด ๋ ๋์์ ์ด๋ป๊ฒ ๋น๊ตํ ์ ์์๊น? ํ์ต ๊ณก์ ๋ ๋ฌด์ํ ์ ์๋ค.
- + : ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ฆฌํฉํ ๋ง ํ๋ ๊ฒ์ ๋ณด์๋ค. ์๋ก์ด ์ฌ๋ ์ถ๊ฐ
5์ 25์ผ ¶
- ajax (callback์ ๋ํ ์ดํด๋ฅผ ์ํด)
- javascript๋ฅผ ์ด์ฉํ ๋น๋๊ธฐ http ์์ฒญ.
- UI๋ฅผ ๊ทธ๋ฆฌ๋ ํ๋ฆ(thread)๊ณผ http ์์ฒญ์ ๋ํ ํ๋ฆ(thread)์ด ๋ฐ๋ก ์กด์ฌํจ.
- http ์์ฒญ ์ชฝ์ ์ธ์ ์์
์ด ๋๋ ์ง ์ ์ ์์.
- callback ํจ์๋ผ๋ ๊ฒ์ ์ด์ฉํด์ ์์
์ด ๋๋ฌ์ ๋ ์ฒ๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ํ ์ ์๋ค.
- callback ํจ์๋ผ๋ ๊ฒ์ ์ด์ฉํด์ ์์
์ด ๋๋ฌ์ ๋ ์ฒ๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ํ ์ ์๋ค.
- javascript๋ฅผ ์ด์ฉํ ๋น๋๊ธฐ http ์์ฒญ.
- ์ง๊ฒฝ์ด ์ฝ๋(CauBooks) ์ดํด๋ณด๊ธฐ
- javascript ์์ค ์ฝ๋์์ ํ๊บผ๋ฒ์ ์ธ์๋ฅผ ๋๊ธฐ๋ ๋ฐฉ์.
- ๋ก๊ทธ์ธ ์ฑ๊ณต, ์คํจ์ ๋ฐ๋ฅธ callback ํจ์๋ฅผ ํ ๋ฒ์ ๋๊ธฐ๊ณ ์๋ค.
- ํ์ฌ๋ callback ํจ์์ ์ด๋ฆ์ ๋ถ์ฌ์ ์ธ์์ ๋ฃ๊ณ ์์ง๋ง ์ฃผ๋ก ์ต๋ช
ํจ์๋ฅผ ์ฐ๋ js์ ํน์ง์ด๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ด๋ฆ์ ๋ถ์ฌ์ ๊ด๋ฆฌ๋ฅผ ํด์ผ ํ๋ ๋ฑ์ ๋ถํธํจ์ ๊ณ ๋ คํ์ฌ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์์ ํ๊ณ ์ถ๋ค.
- ๋ก๊ทธ์ธ ์ฑ๊ณต, ์คํจ์ ๋ฐ๋ฅธ callback ํจ์๋ฅผ ํ ๋ฒ์ ๋๊ธฐ๊ณ ์๋ค.
- ํ๊บผ๋ฒ์ { id:, password:, success:, fail: }์ ํ๋์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ ๋๊ธฐ๋ ๋ฐฉ์.
- id, password์ success, fail์ ๊ด๊ณ๊ฐ ๋ณ๋ก ์๋๋ฐ ๊ฐ์ด ๋ฌถ์ด์ ๋๊ธฐ๋ฉด ๋์ค์ login ๋ด์์ ๊ฐ๊ฐ์ ํํธ๋ฅผ ๋ ๋ฝ์๋ด์ผ ํ๋ค.
- ๊ฐ์ฒด๊ฐ ๋์ด๊ฐ๋ ๊ฑฐ๋๊น ํน์ property์ ์ ๋ฌด์ ๋ฐ๋ผ ์๋ฌ๋ฅผ ์ผ์ผํฌ ์ ์๋ค.
- id, password์ success, fail์ ๊ด๊ณ๊ฐ ๋ณ๋ก ์๋๋ฐ ๊ฐ์ด ๋ฌถ์ด์ ๋๊ธฐ๋ฉด ๋์ค์ login ๋ด์์ ๊ฐ๊ฐ์ ํํธ๋ฅผ ๋ ๋ฝ์๋ด์ผ ํ๋ค.
- module.login(id, password).success(function() {...}).fail(function() {...})์ผ๋ก ์์ ํ ๊ฒฝ์ฐ.
- ๊ฐ callback ํจ์์ ๋ํ ์๋๊ฐ ๋ณด๋ค ์ ๋๋ฌ๋จ.
- ๊ฐ callback ํจ์์ ๋ํ ์๋๊ฐ ๋ณด๋ค ์ ๋๋ฌ๋จ.
- javascript ์์ค ์ฝ๋์์ ํ๊บผ๋ฒ์ ์ธ์๋ฅผ ๋๊ธฐ๋ ๋ฐฉ์.
- ์ข์ ์ฝ๋?
- ํ์ฌ CleanCode์์ ์ข์ ์ฝ๋๋ก ๋๋ฌด ๊ฐ๋
์ฑ๋ง์ ์ค์ํ๊ณ ์๋ ๊ฒ์ ์๋๊ฐ.
- ์ฝ์ ์ฌ๋์ ์์ค์ ๊ณ ๋ คํ๋ ๊ฒ๋ ํ์ํ๋ค. (๋๋ฌด ๋ค ํ์ด ์ด ์ฝ๋๋ณด๋ค๋ ์ฝ๋ ์ฌ๋์ด ์ดํดํ ์ ์์ ์ ๋์ ๋์ด๋ + ํจ์จ์ ์ธ ์ฝ๋๊ฐ ๋ซ์ง ์์๊ฐ)
- ๋๊ฐํฉ๋๋ค. ์ ๊ฐ ํด๋ฆฐ์ฝ๋ ์คํฐ๋๋ฅผ ํ๋ ์ด์ ๋ ๊ถ๊ทน์ ์ผ๋ก ์์ฐ์ฑ ํฅ์์
๋๋ค(์ ๊ฐ ์์ฆ ๊ฐ์กฐํ๋? ใ
ใ
). ์งํ ๋๋๊ฐ ์ธ๊ธํ๋ฏ ์ฝ๋๋ ์ผ๋จ ๋์ํด์ผ ํ๋ ๊ฒ์ด ์ฒซ ๋ฒ์งธ. ์ ์ทจํฅ๋๋ก ์ฝ๊ฐ ์ถ์ํํ์๋ฉด ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฒ. ์๋ฒ ๋๋ ๊ฐ๋ฐ์์๋ ํผํฌ๋จผ์ค ํฅ์์ ์ํด '์ ์์ ์ธ(?)' ๊ตฌ์กฐ๋ ๋ฐฉ๋ฒ๋ก ์ ๊นจ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ์ง ๋ชป ํ๋ฉด, ์ค์ง์ ์ผ๋ก๋ ์๋ฌด ๊ฒ๋ ์์ฐํ์ง ์์ ๊ฒ๊ณผ ๊ฐ์ ์๋ ์์ผ๋๊น์. - ์ ์ง๊ฒฝ
- ์ฐ๋ฌธ์ด๋ ์ด๋ฌธ์ด๋์ ์ฐจ์ด๋ผ๋ ์๊ฐ์ด ๋ญ๋๋ค. - ์์งํ
- ๋๊ฐํฉ๋๋ค. ์ ๊ฐ ํด๋ฆฐ์ฝ๋ ์คํฐ๋๋ฅผ ํ๋ ์ด์ ๋ ๊ถ๊ทน์ ์ผ๋ก ์์ฐ์ฑ ํฅ์์
๋๋ค(์ ๊ฐ ์์ฆ ๊ฐ์กฐํ๋? ใ
ใ
). ์งํ ๋๋๊ฐ ์ธ๊ธํ๋ฏ ์ฝ๋๋ ์ผ๋จ ๋์ํด์ผ ํ๋ ๊ฒ์ด ์ฒซ ๋ฒ์งธ. ์ ์ทจํฅ๋๋ก ์ฝ๊ฐ ์ถ์ํํ์๋ฉด ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฒ. ์๋ฒ ๋๋ ๊ฐ๋ฐ์์๋ ํผํฌ๋จผ์ค ํฅ์์ ์ํด '์ ์์ ์ธ(?)' ๊ตฌ์กฐ๋ ๋ฐฉ๋ฒ๋ก ์ ๊นจ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ์ง ๋ชป ํ๋ฉด, ์ค์ง์ ์ผ๋ก๋ ์๋ฌด ๊ฒ๋ ์์ฐํ์ง ์์ ๊ฒ๊ณผ ๊ฐ์ ์๋ ์์ผ๋๊น์. - ์ ์ง๊ฒฝ
- ์ฝ์ ์ฌ๋์ ์์ค์ ๊ณ ๋ คํ๋ ๊ฒ๋ ํ์ํ๋ค. (๋๋ฌด ๋ค ํ์ด ์ด ์ฝ๋๋ณด๋ค๋ ์ฝ๋ ์ฌ๋์ด ์ดํดํ ์ ์์ ์ ๋์ ๋์ด๋ + ํจ์จ์ ์ธ ์ฝ๋๊ฐ ๋ซ์ง ์์๊ฐ)
- ํ์ฌ CleanCode์์ ์ข์ ์ฝ๋๋ก ๋๋ฌด ๊ฐ๋
์ฑ๋ง์ ์ค์ํ๊ณ ์๋ ๊ฒ์ ์๋๊ฐ.
- ์์งํ์ my-calculator ํ
์คํธ ์ฝ๋ ๋ฆฌ๋ทฐ
- spec์ ์ง์ ๋์ด ์์ง ์์ ๊ฒฝ์ฐ์ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋๊ฐ?
- spec์ ์ง์ ๋์ด ์์ง ์๋ค๋๊ฑด ๋ฌด์จ ์๋ฏธ์ง?? - ์์งํ
- ์๋ฅผ๋ค๋ฉด ์
๋ ฅ์ด ๋ค์ด์์ ๋ A๋ผ๋ ์ถ๋ ฅ์ด ๋์์ผ ํ๋ค๊ณ ๋ง spec์ ์ ์๋ผ์์ผ๋ฉด ์
๋ ฅ์ด ์์ ๋์ ๋ํ ํ
์คํธ ์ฝ๋๋ ๋ฌด์จ ๊ธฐ์ค์ผ๋ก ์์ฑํ๋๋ ๋๋ ์๋ฌ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ๋๊ฐ์ ๋ํ ๊ธฐ์ค์ ๋งํ๋๊ฒ ๊ฐ์ต๋๋ค. - ์์์ฃผ
- ์, ๊ทธ๋ฐ๋ง ํ ๊ฒ ๊ฐ๋ค์. ์ด๊ฒฝ์ฐ๋ ์ฝ๋๊ฐ ์๋๋ผ ์๊ตฌ์ฌํญ(์ํคํ
์ฒ) ๋จ๊ณ์์ ์ ์๊ฐ ํ์ํ ์ผ์ด๋ค์. - ์์งํ
- ์ค์ ์ผํ๋๋ฐ์๋ ์ด๋ค๊ฐ์? ์ด๋ฐ ๋ถ๋ถ์ ๋ํ ์๊ตฌ์ฌํญ์ด ์์ ๊ฒฝ์ฐ์๋ ์ด๋ค์์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํ๋์ง๊ฐ ๊ถ๊ธํฉ๋๋ค. ๋จผ์ ์ฒ๋ฆฌํ๊ณ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋ค๊ณ ๋ฐ๋ก ๋ณด๊ณ ํ๋์? ์๋๋ฉด ์์ผ๋๊น ์ด๋ฐ๊ฑธ ์ ์ํด์ค์ผ ํ๋ค๊ณ ๊ฑด์๋ฅผ ํ๊ณ ๋๋ต์ด ์ค๋ฉด ๊ทธ ๋ ์ฒ๋ฆฌ๋ฅผ ํ๋์? - ์์์ฃผ
- spec์ ์ง์ ๋์ด ์์ง ์๋ค๋๊ฑด ๋ฌด์จ ์๋ฏธ์ง?? - ์์งํ
- spec์ ์ง์ ๋์ด ์์ง ์์ ๊ฒฝ์ฐ์ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋๊ฐ?
- Ruby StyleGuide - ์ฝ๋ฉ ์คํ์ผ ์์ฒด๋ณด๋ค ์ ๊ทธ๋ฐ ์คํ์ผ์ ์ ํํ๋์ง์ ๋ํด ์๊ฐํด ๋ณด๋ ๊ฒ์ด ์ค์ํจ.
ํ๊ณ ¶
- ์งํ
+ : ํ์ฌ์์ ์ง์ ๋๋ฅด๋ค๊ฐ ์๋๋ฐ(์ด์ฟ์ง ๋๋ฆ.. ์ฃผ๋ง์.. ์ ์ฅ), ์ค๊ธฐ๋ฅผ ์ ํ ๊ฒ ๊ฐ๋ค.
- : ์๋ ์ฌ ๊ณํ์ด ์๋์๊ธฐ ๋๋ฌธ์ ํ์ํ ๋ ธํธ๋ถ์ด๋ ์ฑ ๋ฑ์ ์ฑ๊ฒจ์ค์ง ๋ชป ํ๋ค.
- ์์์ฃผ
+ : ๋ฌด์์ ํด๋ฆฐ ์ฝ๋์ ๋ํด ์ด์ผ๊ธฐ๋ฅผ ํ์๋๋ฐ ์ข์ ์ฝ๋์ ๋ํ ์๊ธฐ๋ฅผ ํ๋ฉด์ ํด๋ฆฐ ์ฝ๋์ ๋ํด ๋ค์ ์๊ฐํ๊ฒ ๋จ.
- : ์ข์ ์ฝ๋๋ฅผ ๊ตฌํด ์ค์๊ณ ํ๋๋ฐ ํ๋ค ๋ณด๋ ์๊ฐ๋ณด๋ค ์ด๋ ค์์ ๋ชป ์ฐพ์์จ ๊ฒ์ ๋ํ ๋ฏธ์ํจ.
- ์ง๊ฒฝ
+ : ์์์ฃผ๊ฐ ์ฝ๋์ ๋ํด ๋ฆฌ๋ทฐ๋ฅผ ํ๊ณ ์๊ฐ์ ์ ์ด ์ค ๊ฒ. -> ๋๊ฐ ์ฝ๋๋ฅผ ๋ด ์คฌ์ผ๋ ๋ค์ ์ฃผ์ ๋ ์์ ์ ํ ๋๊ธฐ๊ฐ ๋จ.
- : ์คํฐ๋ ์๊ฐ์ ๊ฒฝ๊ณ์ ์ด ์์ง ๋๋ ทํ์ง ์์.
f : - ์ค์ด๊ณ + ๋๋ฆฌ๊ฒ
- ๋ฐํฌ์ <= ์๊ธฐ ์ฝ๋ ๋ค๊ณ ์ค๋ฉด ์ข๊ฒ ๋ค
+ : ์ด๋ฐ์ callback, ajax์ ๋ํด ๋ฐ๋ก ์ค๋ช ์ ํด ์ค ๊ฒ ์ข์์
- : ๋งํ๋ ๋ด์ฉ์ ์์ ํ ์ดํดํ๊ธฐ๊ฐ ํ๋ค๋ค.
- ์๋ฏผ๊ด
+ : ๋ฐ๋ก ์ค๋น ํด ์จ ๊ฒ ์์์ง๋ง ๊ทธ๋๋ ๋ค๋ฅธ ๋ถ๋ค ๋๋ถ์ ์งํ์ด ์ ๋์๋ค. ์ค๋น๋ฅผ ํ์ง ์๋๋ผ๋ ์ฐธ๊ฐ์ ์๋ฏธ๊ฐ ์๋ค๋ ์๊ฐ์ ํ ์ ์๊ฒ ๋์๋ค.
- : ์๊ฐ ์ค์ผ ์ ์์๊น? ์ฑ ์งํ? ์ฝ๋ ์งํ? ์งํ์ ์ด๋ค ์์ผ๋ก ํด์ผ ํ ์ง ์์ง๋ ๋งค๋๋ฝ์ง ์์ ๋๋์ด ์๋ค.
6์ 1์ผ ¶
- java se7 spec
- guava ์ฝ๋
- ์์์ฃผ์ xml ํ์
- ์๋ฏผ๊ด์ ์
๋ฃฐ๋ฌ ์คํ๋งํ ๊ฒ์
6์ 8์ผ ¶
- 4์ฅ ์ฝ๋ฉํธ
- CleanCoders ๊ฐ์ ๋ง๋ณด๊ธฐ.
- ์ํผ์๋ 1์ 1๋ฌ๋ฌ์ฌ์ ์ผ ์ค ์์๋๋ฐ ๊ทธ ์ดํ๋ถํด 12๋ฌ๋ฌ...ใ
ใ
- ์ง์๊ธ์ผ๋ก ๊ตฌ๋งคํ๋๊ฒ ์ข๊ฒ ์.
- ์ํผ์๋ 1์ 1๋ฌ๋ฌ์ฌ์ ์ผ ์ค ์์๋๋ฐ ๊ทธ ์ดํ๋ถํด 12๋ฌ๋ฌ...ใ
ใ
- SE titan ์ฝ๋ ๋ฆฌ๋ทฐ
- ํ์ - 7๋ง์ ์ง์๋ฐ์
ํ๊ณ ¶
6์ 22์ผ ¶
8์ 24์ผ ¶
- ๊น๋จ๊ท, ๋ฐํฌ์ , ์๋ฏผ๊ด, ์์์ฃผ, ์ ์ง๊ฒฝ
- Ch. 11 Systems
- Separate Constructing a System from Using It.
- Separate Constructing a System from Using It.
- ์์ฑ๊ณผ ์ฌ์ฉ์ ๋ถ๋ฆฌํ์ ์์ ์ฅ์
- ๊ฐ์ฒด ์ฌ์ฉ ์ฝ๋๋ ๋๊ฐ application ๋ ๋ฒจ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ์ด ๋ฐ๋์ด๋ ์ฌ์ฉ ๋ถ๋ถ์ ๊ทธ๋๋ก ์ ์งํ ์ ์๋ค.
- ๊ฐ์ฒด ์์ฑ์์ ๋ค์ํ ์ถ๊ฐ ์์ ๋ค(proxy, lazy initialization ๋ฑ)์ด ๊ฐ๋ฅํ๋ค.
- ์์ฑ
- Factory Pattern
- Factory๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํ ๊ฐ์ฒด์ ์์ฑ์ด๋ ๊ฐ์ฒด์ ์ค์ ๋ชจ์์ ์จ๊ธธ ์ ์๋ค.
- application ๋จ๊ณ์์ Factory๋ฅผ ํตํด์ ์ง์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ํด๋น ๊ฐ์ฒด์ ์์ฑ ์๊ฐ์ application์์ ํต์ ํ ์ ์๋ค.
- Dependency Injection
- ๊ฐ์ฒด์ ์ฑ ์์ ๊น๋ํ๊ฒ ๋๋ ์ ์๋ค.
- ์์คํ ์ ๊ตฌ์กฐ๊ฐ ๋ณต์กํด ์ง ์ ์๋ค.
- Factory Pattern
- ํก๋จ ๊ด์ฌ์ฌ์ ์ฒ๋ฆฌ(AOP) : DB ์ ์, transaction, log ๋ฑ ๋ค์ํ ๋ชจ๋๋ค์์ ๋์ผํ๊ฒ ๋ํ๋๋ ์์
๋ค
- Java Proxies : ๊ฐ์ฒด ์์ฑ ์์ proxy๋ฅผ ๊ฑฐ์น๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ํตํด ํด๋น ๊ฐ์ฒด์ ๋ฉ์๋ ํธ์ถ์ ๋ค์ํ ๋ถ๊ฐ ์์
๋ค(ํก๋จ ๊ด์ฌ์ฌ)์ ์ฒ๋ฆฌํ ์ ์๋ค. ๋ค๋ง ์ฌ์ฉ์ด ๋ณต์กํ๊ณ ์ฌ์ฉ์์๋ ์๋์ ๋ฐฉ๋ฒ๋ค์ ๋นํด ์ ํ์ด ์ข ์๋ค.
- EJB, Spring ... : ํด๋น framework์์ ์ ๊ณตํ๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ ํตํด xml, annotation ๋ฑ์ ๊ฐ๋จํ ์ค์ ์ผ๋ก ํก๋จ ๊ด์ฌ์ฌ์ ๊ดํ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ํด๋น ๊ธฐ๋ฅ๋ค์ ์์ ์ ํ๋ก๊ทธ๋จ์ ๋ฃ์ ์ ์๋ค.
- Java Proxies : ๊ฐ์ฒด ์์ฑ ์์ proxy๋ฅผ ๊ฑฐ์น๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ํตํด ํด๋น ๊ฐ์ฒด์ ๋ฉ์๋ ํธ์ถ์ ๋ค์ํ ๋ถ๊ฐ ์์
๋ค(ํก๋จ ๊ด์ฌ์ฌ)์ ์ฒ๋ฆฌํ ์ ์๋ค. ๋ค๋ง ์ฌ์ฉ์ด ๋ณต์กํ๊ณ ์ฌ์ฉ์์๋ ์๋์ ๋ฐฉ๋ฒ๋ค์ ๋นํด ์ ํ์ด ์ข ์๋ค.
8์ 31์ผ ¶
- ๊น๋จ๊ท, ๋ฐํฌ์ , ์๋ฏผ๊ด, ์์์ฃผ, ์ ์ง๊ฒฝ
- Ch. 12 ์ฐฝ๋ฐ์ฑ
- ์ฐฝ๋ฐ ํ์
- ์์ ๋ถ๋ถ์ ๋ณด์์ ๋๋ ๋ํ๋์ง ์๋ ํน์ฑ์ด ์ ์ฒด๋ฅผ ๋ณด์์ ๋๋ ๋ํ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.
- ์ฝ๋์ ์ฑ๋ฅ ๊ฐ์ ์ ์ํ ๋ถ๋ถ์ ์ธ ๋ฆฌํฉํ ๋ง์ด ์ด์ด์ง๋ค ๋ณด๋ฉด ์ด๋ค ํจํด์ด ๋ํ๋๋ ๊ฒฝ์ฐ๋ฅผ ์๋ก ๋ค ์ ์๋ค.
- ์์ ๋ถ๋ถ์ ๋ณด์์ ๋๋ ๋ํ๋์ง ์๋ ํน์ฑ์ด ์ ์ฒด๋ฅผ ๋ณด์์ ๋๋ ๋ํ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.
- ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น (ISP)
- ์ด๋ค ๊ฐ์ฒด์ ์ฌ์ฉ์์๊ฒ ๊ทธ ์ฌ์ฉ์ํํ
ํ์ํ ๋ฉ์๋๋ง ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ผ.
- ์ด๋ค ๊ฐ์ฒด์ ์ฌ์ฉ์์๊ฒ ๊ทธ ์ฌ์ฉ์ํํ
ํ์ํ ๋ฉ์๋๋ง ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ผ.
- proxy pattern in javascript
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ง์ํ๋ apply ํจ์์ arguments๋ก ํจ์์ ์ธ์๊ฐ์ ๋ฐ์์ฌ ์ ์๋ ๊ฒ์ ์ด์ฉํด ์ธ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ์์ด๋ ๊ฐ๋จํ๊ฒ proxy๋ฅผ ๊ตฌํํ ์ ์๋ค. jquery-aop ๋ฑ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ง์ํ๋ apply ํจ์์ arguments๋ก ํจ์์ ์ธ์๊ฐ์ ๋ฐ์์ฌ ์ ์๋ ๊ฒ์ ์ด์ฉํด ์ธ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ์์ด๋ ๊ฐ๋จํ๊ฒ proxy๋ฅผ ๊ตฌํํ ์ ์๋ค. jquery-aop ๋ฑ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ค.
- ์ฐฝ๋ฐ ํ์
(function() { var proxied = console.log; console.log = function() { alert(arguments[0]); // ์ด๋ ๊ฒ apply์ ์ ํน์ ๋ค๋ก ์คํ๋๊ธฐ๋ฅผ ์ํ๋ ๊ธฐ๋ฅ์ ํธ์ถํ๋ค. return proxied.apply(this, arguments); }; })();
2013๋ 11์ 09์ผ ¶
- ๊น๋จ๊ท, ๋ฐํฌ์ , ์๋ฏผ๊ด, ์์์ฃผ, ์ ์ง๊ฒฝ, ์ ํ์ค
comment me ¶
- ์คํฐ๋ ์ด๋ฆ ์ ํฉ์๋ค. ์๋ฆ๋ค์์ ์ถ๊ตฌํ๋๊น ์๋ ์๋ฆญ์จ? - ์์งํ
- ํ๊ธฐ๋ฅผ +, -, F ๋ฐฉ์์ผ๋ก ๋๋์ด ์์ฑํ๋ค์! ์ข์ ๋ฐฉ์์ธ๋ฏใ
ใ
- ๊น๋ฏผ์ฌ
- ์ ๋ ๊ฑฐ์ฌ๋ ค์ ๋ฐ๊ฟ๋ฌ๋๋ฐ ๊ทธ๋ฅ ๋
๋ฌ์ผ์งใ
ใ
- ์์งํ
- ์ ๋ ๊ฑฐ์ฌ๋ ค์ ๋ฐ๊ฟ๋ฌ๋๋ฐ ๊ทธ๋ฅ ๋
๋ฌ์ผ์งใ
ใ
- ์์งํ
- ์ง๊ฒฝ 8/24์ผ์ wiki ๋ด์ฉ ์์ฑํด์ค์ ๊ณ ๋ง์ - ์๋ฏผ๊ด