E D R , A S I H C RSS

Separating User Interface Code


전에 TDD 기사 μΌμ„λ•Œ μ½μœΌλ©΄μ„œ ꡉμž₯히 감λͺ…κΉŠμ—ˆλ˜ ꡬ절. λ””μžμΈμ—μ„œ 둜직/UI 뢄리가 μ–΄λ–»κ²Œ 이루어져야 ν•˜λŠ”κ°€λΌ μ•„μ£Ό κ°„λ‹¨ν•˜λ©΄μ„œλ„ λͺ…λ£Œν•˜κ²Œ 말해μ€λ‹€. 개인적으둠 RefactoringBook 을 μ½μ—ˆμ„λ•Œλ³΄λ‹€ 이 글을 λ³Έ 것이 더 μΆ©κ²©μ μ΄μ˜€λ˜κ²ƒμœΌλ‘œ κΈ°μ–΅λœλ‹€. (특히, RefactoringBook 을 μ½μ—ˆμ„λ•Œλ³΄λ‹€ μƒλŒ€μ μœΌλ‘œ λ””μžμΈμ— λŒ€ν•œ 지식이 더 μžˆμ—ˆμ„λ•Œμž„μ—λ„ 좩격이 더 μ»ΈμŒμ—.) :
{{|
When separating the presentation from the domain, make sure that no part of the domain code makes any reference to the presentation code. So if you write an application with a WIMP (windows, icons, mouse, and pointer) GUI, you should be able to write a command line interface that does everything that you can do through the WIMP interface -- without copying any code from the WIMP into the command line.

도메인λͺ¨λΈλ‘œλΆ€ν„° ν”„λ ˆμ  ν…Œμ΄μ…˜ 뢀뢄이 λΆ„λ¦¬λ˜μ—ˆμ„λ•Œ, 도메인 μ½”λ“œμ˜ μ–΄λ– ν•œ 뢀뢄도 presentattion μ½”λ“œμ™€ 관련이 없도둝 ν•΄μ•Ό ν•œλ‹€. κ·Έλ¦¬ν•˜μ—¬ 만일 WIMP GUI μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μž‘μ„±ν–ˆμ„λ•Œ 당신은 WIMP μΈν„°νŽ˜μ΄μŠ€λΌ ν†΅ν•΄ ν•  수 μžˆλŠ” λͺ¨λ“  것듀을 command line interface 둜 μž‘μ„±ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. WIMP μ½”λ“œλ‘œλΆ€ν„° μ–΄λ– ν•œ μ½”λ“œλ„ λ³΅μ‚¬ν•˜μ§€ μ•Šκ³ .
|}}

μ΄λŠ” UI λΆ€λΆ„μ—λ§Œ μ μš©λ˜μ§€ μ•ŠλŠ”λ‹€. μΌμ’…μ˜ InformationHiding 의 κ°œλ…μœΌλ‘œ ν™•μž₯ν•  수 μžˆλ‹€. μ˜ˆλΌ λ“€λ©΄ λ‹€μŒκ³Ό 같이 μ‘μš©ν•  수 μžˆμ§€ μ•Šμ„κΉŒ.
{{|
도메인λͺ¨λΈλ‘œλΆ€ν„° νΌμ‹œμŠ€ν„΄μŠ€ 뢀뢄이 λΆ„λ¦¬λ˜μ—ˆμ„λ•Œ, 도메인 μ½”λ“œμ˜ μ–΄λ– ν•œ 뢀뢄도 νΌμ‹œμŠ€ν„΄νŠΈ λ ˆμ΄μ–΄ μ½”λ“œμ™€ 관련이 없도둝 ν•΄μ•Ό ν•œλ‹€. 만일 MySQL Repository을 μž‘μ„±ν–ˆμ„λ•Œ 당신은 MySQL μΈν„°νŽ˜μ΄μŠ€λΌ ν†΅ν•΄ ν•  수 μžˆλŠ” λͺ¨λ“  것듀을 Flat File Repository interface 둜 μž‘μ„±ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. MySQL μ½”λ“œλ‘œλΆ€ν„° μ–΄λ– ν•œ μ½”λ“œλ„ λ³΅μ‚¬ν•˜μ§€ μ•Šκ³ .
|}}
λ„ˆλ¬΄ 이상적이라고 말할지 λͺ¨λ₯΄κ² μ§€λ§Œ, DIP 의 μ›λ¦¬λΌ μž˜ 지킨닀면(Dependency λŠ” Abstraction 에 λŒ€ν•΄μ„œλ§Œ λ§ΊλŠ”λ‹€ λ“±) κ°€λŠ₯ν•˜μ§€ μ•Šμ„κΉŒ 생각. λ˜λŠ”, μœ„μ—μ„œμ˜ WIMPλΌ κ·ΈλŒ€λ‘œ μ›ΉμœΌλ‘œ 바꾸어도. μ–΄λ– ν•œ λ””μžμΈμ΄ λ‚˜μ˜¬κΉŒ 상상해본닀.
--1002
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:01
Processing time 0.0144 sec