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.0507 sec