E D R , A S I H C RSS

Clean Code

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()™€ ฐ™€ ฐฉฒ•ด •„‹ˆ ‹คฅธ ฐฉฒ•œกœ „ ‹œํ‚คŠ” ชจ–‘ด ” ‚ซ‹ค.

Class Account {
private AccountInfo info;
};
  • Chapter 9 Unit Tests
    • ฌธ œ “ค—ˆ„ •Œ ํ…ŒŠคํŠธฝ”“œ  € ƒฐํ•˜Š” Šต€„ “ค—ฌ• ํ•  ฒƒ ฐ™‹ค. ฌธ œ ํ•ดฒฐํ•˜Š” ฝ”“œ  € งœ คณ  ํ•˜ฉด ฒฐตญ ํ…ŒŠคํŠธฝ”“œ ž‘„ด •„‹ˆ ง ‘ ํ…ŒŠคํŠธ ํ•˜ฒŒ ˜Š” “ ํ•˜‹ค.
    • ํ”“œ„ ฆฌ ฐ›ธฐ œ„ํ•ด„œ ํ…ŒŠคํŠธ ‹ค‹œ. ํ”“œ„ ฐ›ณ  ณ   •ŒŒ€˜ ธฐ€ งง•„• ํ•จ. ฝ”“œ งœณ  œ ‹›ํ…ŒŠคํŠธ งŒ“œŠ” ฒƒ„ •ˆ˜Š”•„‹˜. ํ”“œ„ ฐ”กœ ฐ›„ ˆ˜ žˆœฉด จ.
    • ฝ”“œ —ํ•˜ฒŒ ํ•˜ณ  ‹ถœฉด ํ…ŒŠคํŠธ ฝ”“œ„ —ํ•˜ฒŒ œ €ํ•ด• ํ•œ‹ค. ํ…ŒŠคํŠธ ฝ”“œ€ ”Ÿฌ›Œ€ฉด ํ…ŒŠคํŠธ ž˜ •ˆํ•˜ฒŒ ˜‹ˆŒ ฝ”“œ„ ”Ÿฌ›Œ€ฒŒ œ‹ค.
    • ํ…ŒŠคํŠธ ‹œ—Š” ˜ฌฐ”ฅธ inputด  œŒ€กœ “ค–ด˜คŠ”€  € ํ™•ธํ•˜ณ  ‚˜„œ ฝ”“œ€ ž˜ชป˜—ˆŠ”€ ƒฐํ•ด ฒƒ.
    • ‹ค œกœŠ” “ฐ€ •ŠŠ”ฐ ํ…ŒŠคํŠธ œ„ํ•œ ฉ”†Œ“œ ถ”€ํ•˜ฒŒ ˜Š” ฒฝšฐ€ žˆ„ ˆ˜ žˆ€ •Š€€? -> java˜ ฒฝšฐŠ” reflection„ ‚ฌšฉํ•˜ฉด ฉ”†Œ“œ˜ ถ”€ —†ด ฒ˜ฆฌ€ €Šฅํ•œ ฒฝšฐ„ žˆ€งŒ ทธฒƒณด‹ค„ ํ…ŒŠคํŠธšฉ framework(mockito “) ‚ฌšฉํ•˜Š”ฒƒด ข‹‹ค.
    • BDD, Given/When/Then

5›” 18

  • ํ•จˆ˜
    • ํ”Œž˜ทธŠ” ถ”ํ•˜‹ค
      • guard clause “ฐ„š”!
      • ํ•จˆ˜Š” ํ•˜‚˜˜ „ ํ•˜Š”ฒŒ ข‹‹คณ  ํ•˜Š”ฐ ํ”Œž˜ทธ “ด‹คŠ” ฒƒ€ ํ•จˆ˜€ ํ”Œž˜ทธ˜ ฐ’— ”ฐ„œ ‹คฅธ ฐ’„ ํ•œ‹คณ  งํ•˜Š” ฒƒด€กœ.
      • ฐจฆฌ ‹คฅธ „ ํ•˜Š” ํ•จˆ˜ —ฌŸฌฐœ งŒ“œŠ”ฒŒ ” ‚ซ‹ค.
    • abstraction level
      • 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. */
        
    • Don't pass null.

ํ›„ธฐ

  • €
    • + : ฝ”“œ ฆฌํŒฉํ† ง„ ํ•ดด„œ ข‹•˜‹ค. ํ™”ดํŠธณด“œ—  –ด€ฉด„œ ฝ–ดณธ €„ ณตœ ํ•˜‹ˆŒ  •ฆฌœ Š‚Œ.
    • - : ํ”„กœ ํŠธ ฐฉ‹ ฐฉํ–ฅด ํฆฟํ•œ Š‚Œด‹ค.
    • F : ‹œ„„ ปดํŒฉํŠธํ•˜ฒŒ „ํ–‰ํ•˜ณ  ‹ถ‹ค. Š˜–ด€Š” ฒฝํ–ฅด žˆ‹ค.
  • „ฒฝ
    • + : ฆฌํŒฉํ† ง„ ‹œ„ํ•ดณด•˜‹ค. ‹คฅธ ‚ฌžŒ˜ ฝ”“œ ฆฌํŒฉํ† ง ํ•  ˆ˜ žˆ‹คŠ” ƒฐ„ ํ•˜ฒŒ ˜—ˆ‹ค.
    • - : ณธธ˜ ฝ”“œ ฆฌทฐฐ›ณ  ‹ถ—ˆŠ”ฐ  •ฆฌ€ ˜€ •Š•„ ฐ›€ ชปํ–ˆ‹ค.
    • F : ค‘—„ Šคํ„””! ˜จธ ํ˜‘—… ํˆด„ ดšฉํ•  ˆ˜ žˆ‹ค.
  • ˜
    • + : … –˜ธฐงŒ ํ•œฒŒ •„‹ˆ …˜ ˜ˆ œ ‹œ„ํ•ดดค‹ค.
    • - : ฐž ˜ˆ œ ฆฌํŒฉํ† งํ–ˆ‹ค. ”ฐกœ … Š‚Œ.
      • ‚ฌ‹ค ทธŸฐ Š‚Œด “ค–ด„ ฒฐตญ ฝ”“œ งœŠ” €„€ ”ฐกœ ํ•  ˆ˜ฐ–— —†Š” ฒƒ ฐ™œ‹ˆ –ดฉ” ˆ˜ —†Š” ฒƒ ฐ™ธฐ„ ํ•˜€งŒš”. - „œ˜
    • F : Šคํ„””  œŒ€กœ ํ•˜ณ  žˆŠ”€ •Œณ ‹ถ‹ค. (ฉ˜ํ† € žˆ—ˆœฉด ข‹ฒ ‹ค?)
      • ฝ”„ ฐ›ณ  ‹ถ‹คŠ” งธ“ - „œ€ํ˜œ
      • €ฅดณŠ” ฒƒ Œ€Š” •„‹ˆณ  ž˜ ํ•˜ณ  žˆŠ”€ •„‹Œ€ •Œ ˆ˜ žˆ—ˆœฉด ข‹ฒ ‹คŠ”ฃ . ชฉํ‘œ –˜ธฐ ํ•˜‹ ด ํ™•‹คํžˆ  œŒ€กœ ํ•˜ณ  žˆŠ”€ ฐธณ €   ฒƒ ฐ™Šต‹ˆ‹ค. - „œ˜
      • „ทธž˜„œ €Ÿฌ ฝ”ดณ  –ดš”ใ…‹ใ…‹ ฉ˜ํ† ง€ •„‹Œ ฒƒ ฐ™ณ  ํ‹ฐ€ €–‘ํ•˜ณ ‹ถณ , Šคํ„””€ ž˜ ˜–ด€ณ  žˆŠ”€ ํ™•ธํ•˜ณ  ‹ถ‹คŠ” งฅฝ—„  ฝ”ด  œ œ ‚ฌํ•œ ฒƒฐ™•„„œฆฌ.. - „œ€ํ˜œ
  • ํฌ •
    • + : ฒ˜Œ ‚˜˜ฌ•Œ –จ ธŠ”ฐ งŽด ‹ ฒฝ จ ค˜„œ ข‹•˜‹ค.
    • - : ฐฐฒฝ€‹ด €ํ•œ “ ํ•˜‹ค.
    • F : Šคํ„””ค‘— –ด–ปฒŒ „ํ–‰ํ•ด• ํ•˜‚˜— Œ€ํ•œ –˜ธฐ „ˆฌด งŽด ํ•œ‹ค.
  • €ํ˜œ
    • + : ‹คฅธ ‚ฌžŒ“คด ฆฌํŒฉํ† ง ํ•˜Š” ฒƒ„ ณด•˜‹ค. ƒˆกœšด ‚ฌžŒ ถ”€
    • - : ฆฌํŒฉํ† ง„ ํ•  •Œ ฆฌํŒฉํ† ง— Œ€ํ•œ š”ตฌ‚ฌํ•ญ, ฆฌํŒฉํ† ง„ ฉˆถœ ˆ˜ žˆŠ” ˆ˜€„  œ‹œํ•˜€ ชปํ•˜˜€‹ค.
      • 'ดฒƒ'„  œ‹œํ•  ˆ˜€ žˆ‚˜?
    • F : Šคํ„”” ฒซ‚   •ํ–ˆ˜ ฐž˜ ชฉ  ชฉํ‘œ(–ด””ฐ”€?) ํ†ตํ•ด Šคํ„””€  œŒ€กœ „ํ–‰˜–ด €ณ  žˆŠ”€ ฒดํฌํ•  ˆ˜ žˆ„ฒƒ.
      • ทธŸฌ‚˜ ž‹ ˜ ‹ค ฅด ” ‚˜Œ„ –ด–ปฒŒ „ตํ•  ˆ˜ žˆ„Œ? ํ•™Šต ณก„ „ ฌด‹œํ•  ˆ˜ —†‹ค.

5›” 25

  • ajax (callback— Œ€ํ•œ ดํ•ด œ„ํ•ด)
    • javascript ดšฉํ•œ „™ธฐ http š”ฒญ.
    • UI ทธฆฌŠ” ํ„(thread) http š”ฒญ— Œ€ํ•œ ํ„(thread)ด ”ฐกœ กดžฌํ•จ.
    • http š”ฒญ ชฝ€ –ธ œ ž‘—…ด ‚ € •Œ ˆ˜ —†Œ.
      • callback ํ•จˆ˜Š” ฒƒ„ ดšฉํ•ด„œ ž‘—…ด ‚ฌ„ •Œ ฒ˜ฆฌํ•  ฐฉฒ•„  •ํ•  ˆ˜ žˆ‹ค.
  • „ฒฝด ฝ”“œ(CauBooks) ‚ดํŽดณดธฐ
    • javascript †ŒŠค ฝ”“œ—„œ ํ•œฒˆ— ธž „˜ธฐŠ” ฐฉ‹.
      • กœทธธ „ณต, ‹คํŒจ— ”ฐฅธ callback ํ•จˆ˜ ํ•œ ฒˆ— „˜ธฐณ  žˆ‹ค.
      • ํ˜„žฌŠ” callback ํ•จˆ˜— ด„„ ถ™—ฌ„œ ธž— „ณ  žˆ€งŒ กœ ตช… ํ•จˆ˜ “ฐŠ” js˜ ํŠง•ด‚˜ ํ”„กœทธž˜จธ€ ง ‘ ด„„ ถ™—ฌ„œ €ฆฌ ํ•ด• ํ•˜Š” “˜ ถˆํŽธํ•จ„ ณ  คํ•˜—ฌ ‹คฅธ ฐฉ‹œกœ ˆ˜ •ํ•˜ณ  ‹ถ‹ค.
    • ํ•œฒˆ— { id:, password:, success:, fail: }„ ํ•˜‚˜˜ ฐฒดกœ งŒ“ค–ด„œ „˜ธฐŠ” ฐฉ‹.
      • id, password™€ success, fail€ €„€ „กœ —†Š”ฐ ฐ™ด ฌถ–ด„œ „˜ธฐฉด ‚˜ค‘— login ‚ด—„œ ฐฐ˜ ํŒŒํŠธ ˜ ฝ‘•„‚ด• ํ•œ‹ค.
      • ฐฒด€ „˜–ด€Š” ‹ˆŒ ํŠ • property˜ œ ฌด— ”ฐ —Ÿฌ œํ‚ฌ ˆ˜ žˆ‹ค.
    • module.login(id, password).success(function() {...}).fail(function() {...})œกœ ˆ˜ •ํ•  ฒฝšฐ.
      • ฐ callback ํ•จˆ˜— Œ€ํ•œ ˜„€ ณด‹ค ž˜ “œŸฌ‚จ.
  • ข‹€ ฝ”“œ?
    • ํ˜„žฌ CleanCode—„œ ข‹€ ฝ”“œกœ „ˆฌด €…„งŒ„ ค‘‹œํ•˜ณ  žˆŠ” ฒƒ€ •„‹Œ€.
      • ฝ„ ‚ฌžŒ˜ ˆ˜€„ ณ  คํ•˜Š” ฒƒ„ ํ•„š”ํ•˜‹ค. („ˆฌด ‹ค ํ’€–ด “ด ฝ”“œณด‹คŠ” ฝŠ” ‚ฌžŒด ดํ•ดํ•  ˆ˜ žˆ„  •„˜ ‚œด„ + ํšจœจ ธ ฝ”“œ€ ‚ซ€ •Š€€)
        • ™ฐํ•ฉ‹ˆ‹ค.  œ€ ํดฆฐฝ”“œ Šคํ„”” ํ•˜Š” ดœ Š” ถ œกœ ƒ‚ฐ„ ํ–ฅƒž…‹ˆ‹ค( œ€ š”ฆ˜ ฐ•กฐํ•˜Š”? ใ…‹ใ…‹). €ํ˜œ ˆ„‚˜€ –ธธ‰ํ–ˆ“ ฝ”“œŠ” ‹จ ™ž‘ํ•ด• ํ•˜Š” ฒƒด ฒซ ฒˆงธ.  œ ทจํ–ฅŒ€กœ •ฝ„ ถ”ƒํ™”ํ•˜žฉด š”ตฌ‚ฌํ•ญ„ ถฉํ•˜Š” ฒƒ. ž„ฒ ””“œ ฐœฐœ—„œŠ” ํํฌŠค ํ–ฅƒ„ œ„ํ•ด ' •„ ธ(?)' ตฌกฐ‚˜ ฐฉฒ•ก „ Š” ฒฝšฐ„ žˆŠต‹ˆ‹ค. š”ตฌ‚ฌํ•ญ„ ถฉํ•˜€ ชป ํ•˜ฉด, ‹คงˆ œกœŠ” •„ฌด ฒƒ„ ƒ‚ฐํ•˜€ •Š€ ฒƒ ฐ™„ ˆ˜„ žˆœ‹ˆŒš”. -  •„ฒฝ
        • ‚ฐฌธดƒ šดฌธดƒ˜ ฐจดŠ” ƒฐด “ญ‹ˆ‹ค. - „œ€ํ˜œ

  • „œ€ํ˜œ˜ my-calculator ํ…ŒŠคํŠธ ฝ”“œ ฆฌทฐ
    • spec— € •˜–ด žˆ€ •Š€ ฒฝšฐ— ํ…ŒŠคํŠธ ฝ”“œ ž‘„ํ•ด• ํ•˜Š”€?
      • spec— € •˜–ด žˆ€ •Š‹คŠ”ฌดŠจ ˜€?? - „œ€ํ˜œ
      • ˜ˆ“คฉด ž… ฅด “ค–ด™”„ •Œ AŠ” ถœ ฅด ‚˜™€• ํ•œ‹คณ งŒ spec—  •˜žˆœฉด ž… ฅด —†„ •Œ— Œ€ํ•œ ํ…ŒŠคํŠธ ฝ”“œŠ” ฌดŠจ ธฐ€œกœ ž‘„ํ•˜Šƒ ˜Š” —Ÿฌฒ˜ฆฌ ํ•ด• ํ•˜Š”€— Œ€ํ•œ ธฐ€„ งํ•˜Š”ฒƒ ฐ™Šต‹ˆ‹ค. - „œ˜
      • •„, ทธŸฐง ํ•œ ฒƒ ฐ™„š”. ดฒฝšฐŠ” ฝ”“œ€ •„‹ˆ š”ตฌ‚ฌํ•ญ(•„ํ‚คํ…ฒ˜) ‹จ„—„œ  •˜€ ํ•„š”ํ•œ ด„š”. - „œ€ํ˜œ
      • ‹ค œ ํ•˜Š”ฐ„œŠ” –ด–ค€š”? ดŸฐ €„— Œ€ํ•œ š”ตฌ‚ฌํ•ญด —†„ ฒฝšฐ—Š” –ด–ค‹œกœ ฒ˜ฆฌ ํ•˜Š”€€ ถธˆํ•ฉ‹ˆ‹ค.  € ฒ˜ฆฌํ•˜ณ  –ด–ปฒŒ ฒ˜ฆฌํ–ˆ‹คณ  ”ฐกœ ณดณ ํ•˜‚˜š”? •„‹ˆฉด —†œ‹ˆŒ ดŸฐ •˜ํ•ดค˜• ํ•œ‹คณ  ˜ ํ•˜ณ  Œ€‹ตด ˜คฉด ทธ •Œ ฒ˜ฆฌ ํ•˜‚˜š”? - „œ˜
  • Ruby StyleGuide - ฝ””ฉ Šคํƒ€ žฒดณด‹ค ™œ ทธŸฐ Šคํƒ€„ „ ํƒํ–ˆŠ”€— Œ€ํ•ด ƒฐํ•ด ณดŠ” ฒƒด ค‘š”ํ•จ.

ํšŒณ 

  1. €ํ˜œ
    + : ํšŒ‚ฌ—„œ ง„ ‚˜ฅด‹ค€ ™”Š”ฐ(ด‚ฟง ‚˜„.. ง—..   žฅ), ˜คธฐ ž˜ ํ•œ ฒƒ ฐ™‹ค.
    - : ›ž˜ ˜ฌ „ํšด •„‹ˆ—ˆธฐ •Œฌธ— ํ•„š”ํ•œ …ธํŠธถด‚˜ … “„ ™ฒจ˜ค€ ชป ํ–ˆ‹ค.
  2. „œ˜
    + : ฌดž‘ • ํดฆฐ ฝ”“œ— Œ€ํ•ด ด•ธฐ ํ–ˆ—ˆŠ”ฐ ข‹€ ฝ”“œ— Œ€ํ•œ –˜ธฐ ํ•˜ฉด„œ ํดฆฐ ฝ”“œ— Œ€ํ•ด ‹ค‹œ ƒฐํ•˜ฒŒ จ.
    - : ข‹€ ฝ”“œ ตฌํ•ด ˜คžณ  ํ–ˆŠ”ฐ ํ•˜‹ค ณด‹ˆ ƒฐณด‹ค –ด ค›Œ„œ ชป ฐพ•„˜จ ฒƒ— Œ€ํ•œ •ˆํ•จ.
  3. „ฒฝ
    + : „œ˜€ ฝ”“œ— Œ€ํ•ด ฆฌทฐ ํ•˜ณ  ƒฐ„  –ด € ฒƒ. -> ˆ„€ ฝ”“œ ด คฌœ‹ˆ ‹คŒ — ˜ ž‘—…„ ํ•  ™ธฐ€ จ.
    - : Šคํ„”” ‹œ„˜ ฒฝ„„ ด •„ง šœ ทํ•˜€ •ŠŒ.
    f : - „ดณ  + Š˜ฆฌฒŒ
  4. ฐ•ํฌ • <= ์ž๊ธฐ ์ฝ”๋“œ ๋“ค๊ณ  ์˜ค๋ฉด ์ข‹๊ฒ ๋‹ค
    + : ดˆฐ˜— callback, ajax— Œ€ํ•ด ”ฐกœ „ช…„ ํ•ด € ฒŒ ข‹•˜Œ
    - : งํ•˜Š” ‚ดšฉ„ ™„ „ํžˆ ดํ•ดํ•˜ธฐ€ ํž˜“ค‹ค.
  5. „œ€
    + : ”ฐกœ €„ ํ•ด ˜จ ฒŒ —†—ˆ€งŒ ทธž˜„ ‹คฅธ „“ค •„— „ํ–‰ด ž˜ ˜—ˆ‹ค. €„ ํ•˜€ •Š”„ ฐธ€— ˜€ žˆ‹คŠ” ƒฐ„ ํ•  ˆ˜ žˆฒŒ ˜—ˆ‹ค.
    - : ‹œ„ „ ˆ˜ —†„Œ? …„ํ–‰? ฝ”“œ „ํ–‰? „ํ–‰„ –ด–ค ‹œกœ ํ•ด• ํ• € •„ง„ งค„Ÿฝ€ •Š€ Š‚Œด žˆ‹ค.

6›” 1

6›” 8

  1. 4žฅ ฝ”ฉ˜ํŠธ
  2. CleanCoders ฐ•˜ ง›ณดธฐ.
    1. —ํ”†Œ“œ 1€ 1‹ฌŸฌ—ฌ„œ ‹ „ •Œ•˜Š”ฐ ทธ ดํ›„€„ด 12‹ฌŸฌ...ใ… ใ… 
    2. €›ธˆœกœ ตฌงคํ•˜Š”ฒŒ ข‹ฒ Œ.
  3. SE titan ฝ”“œ ฆฌทฐ
  4. ํšŒ‹ - 7งŒ› €›ฐ›Œ

ํšŒณ 

  1. „œ€ํ˜œ
    ํšŒณ  ํšŒ‹œกœ  „ ป” ํ–ˆ‹ค.
  2. „œ˜
  3.  •„ฒฝ
  4. ฐ•ํฌ •
  5. „œ€
  6. •ˆํ˜€
  7. ณ ํ•œข…

6›” 22

  •  •„ฒฝ, €‚จทœ(ํ™˜˜!), ฐ•ํฌ •
  • ‚จทœ C ฝ”“œ ฆฌทฐ. •„ง „ ˜€ •Š€  œด ฝ”“œŠ” ‚˜ค‘—..?
  • €ž 
    •  œ€ €ฃจํ•œ ฐ•˜ ํ•˜Š” ฐ”žŒ—... -  •„ฒฝ
      • ›ž˜ ‚ด€ žˆ–ด• ํ–ˆŠ”ฐ ฐœธ ธ ‚ฌ •œกœ ‹คฅธ ชฝ—„œ ‹œ„„ งŽด “ฐŠ” ฐ”žŒ—... ใ… ใ…  - „œ€

8›” 24

  • €‚จทœ, ฐ•ํฌ •, „œ€, „œ˜,  •„ฒฝ
  • Ch. 11 Systems
    • Separate Constructing a System from Using It.
  • ƒ„ ‚ฌšฉ„ „ฆฌํ–ˆ„ ‹œ˜ žฅ 
    - ฐฒด ‚ฌšฉ ฝ”“œŠ” Œ€ฐœ application  ˆฒจธ ฒฝšฐ€ งŽ€ฐ, ฐฒด ƒ„ ฐฉฒ•ด ฐ”€Œ–ด„ ‚ฌšฉ €„€ ทธŒ€กœ œ €ํ•  ˆ˜ žˆ‹ค.
    - ฐฒด ƒ„‹œ— ‹ค–‘ํ•œ ถ”€ ž‘—…“ค(proxy, lazy initialization “)ด €Šฅํ•˜‹ค.
  • ƒ„
    • Factory Pattern
      - Factory ‚ฌšฉํ•˜ธฐ •Œฌธ— ณตžกํ•œ ฐฒด˜ ƒ„ด‚˜ ฐฒด˜ ‹ค œ ชจ–‘„ ˆจธธ ˆ˜ žˆ‹ค.
      - application ‹จ„—„œ Factory ํ†ตํ•ด„œ ง ‘ ฐฒด ƒ„ํ•˜ธฐ •Œฌธ— ํ•ด‹ ฐฒด˜ ƒ„ ˆœ„„ application—„œ ํ†ต œ ํ•  ˆ˜ žˆ‹ค.
    • Dependency Injection
      - ฐฒด˜ …ž„„ ””ํ•˜ฒŒ ‚˜ˆŒ ˆ˜ žˆ‹ค.
      - ‹œŠคํ…œ˜ ตฌกฐ€ ณตžกํ•ด งˆ ˆ˜ žˆ‹ค.
  • ํšก‹จ €‹ฌ‚ฌ˜ ฒ˜ฆฌ(AOP) : DB  ‘†, transaction, log “ ‹ค–‘ํ•œ ชจ“ˆ“ค—„œ ™ํ•˜ฒŒ ‚˜ํƒ€‚˜Š” ž‘—…“ค
    • Java Proxies : ฐฒด ƒ„ ‹œ— proxy ˜ฒŒ ํ•˜Š” ฐฉฒ•„ ํ†ตํ•ด ํ•ด‹ ฐฒด˜ ฉ”†Œ“œ ํ˜ธถœ‹œ ‹ค–‘ํ•œ €€ ž‘—…“ค(ํšก‹จ €‹ฌ‚ฌ)„ ฒ˜ฆฌํ•  ˆ˜ žˆ‹ค. ‹คงŒ ‚ฌšฉด ณตžกํ•˜ณ  ‚ฌšฉ‹œ—„ •„ž˜˜ ฐฉฒ•“ค— „ํ•ด  œํ•œด € žˆ‹ค.
    • EJB, Spring ... : ํ•ด‹ framework—„œ  œณตํ•˜Š” ‹ค–‘ํ•œ ฐฉฒ•“ค„ ํ†ตํ•ด xml, annotation “˜ „‹จํ•œ „ •œกœ ํšก‹จ €‹ฌ‚ฌ— €ํ•œ ฝ”“œ ž‘„ํ•˜€ •Šณ „ ํ•ด‹ ธฐŠฅ“ค„ ž‹ ˜ ํ”„กœทธžจ— „„ ˆ˜ žˆ‹ค.

8›” 31

  • €‚จทœ, ฐ•ํฌ •, „œ€, „œ˜,  •„ฒฝ
  • Ch. 12 ฐฝฐœ„
    • ฐฝฐœ ํ˜„ƒ
      • ž‘€ €„„ ณด•˜„ •ŒŠ” ‚˜ํƒ€‚˜€ •ŠŠ” ํŠ„ด  „ฒด ณด•˜„ •ŒŠ” ‚˜ํƒ€‚˜Š” ฒฝšฐ งํ•œ‹ค.
      • ฝ”“œ˜ „Šฅ ฐœ„ „ œ„ํ•œ €„ ธ ฆฌํŒฉํ† งด ด–ด€‹ค ณดฉด –ด–ค ํŒจํ„ด ‚˜ํƒ€‚˜Š” ฒฝšฐ ˜ˆกœ “ค ˆ˜ žˆ‹ค.
    • ธํ„ฐํŽ˜ดŠค „ฆฌ ›™ (ISP)
      • –ด–ค ฐฒด˜ ‚ฌšฉž—ฒŒ ทธ ‚ฌšฉžํ•œํ…Œ ํ•„š”ํ•œ ฉ”†Œ“œงŒ žˆŠ” ธํ„ฐํŽ˜ดŠค  œณตํ•˜.
    • proxy pattern in javascript
      • žฐ”ŠคํฌฆฝํŠธ—„œ €›ํ•˜Š” 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

  • Šคํ„”” ด„  •ํ•ฉ‹œ‹ค. •„„‹ค›€„ ถ”ตฌํ•˜‹ˆŒ †Œ‹ˆ —ฆญŠจ? - „œ€ํ˜œ
    • •„„‹คšด กœ ํ•˜žฉด unit sphere ฐ™€ ฒŒ •„„‹คšธ ฒƒ ฐ™ธด ํ•œฐ... ทธ€ •„‹Œ ฒƒ ฐ™ฃ  -_-;; - „œ€
  • ํ›„ธฐ +, -, F ฐฉ‹œกœ ‚˜ˆ„–ด ž‘„ํ–ˆ„š”! ข‹€ ฐฉ‹ธ“ใ…‹ใ…‹ - €žฌ
    • —‡ ‚œ Šฌ ค„œ ฐ”€žฌŠ”ฐ ทธƒฅ ƒ…‘ฌ•€ใ…‹ใ…‹ - „œ€ํ˜œ
  • „ฒฝ 8/24ž wiki ‚ดšฉ ž‘„ํ•ดค˜„œ ณ งˆ›Œ - „œ€
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:54
Processing time 0.0917 sec