코딩하기전에 디자인 패턴을 발견하는 능력

익명 사용자의 이미지

이상적인지 모르겠지만 코딩하기전에 적합한 디자인 패턴을 발견하여 적용하는 것이 좋을것 같습니다.

그런데 현실은..
적합한 디자인 패턴이 무엇이고 필요한 다른 패턴들은 무엇인지 고민할 충분한 시간이 없습니다. 언뜻 보기엔 어댑터를 만들면 될 듯한데.. 브릿지가 맞는게 아닌지.. 팩토리도 만들어 써야겠는데.. 코딩은 점점 늘어나고 이러다가 구현에만 며칠 걸리겠는걸? 당장 오늘 퇴근전에 이 기능을 구현해서 내일은 테스트를 해보고 소스서버에 올린뒤 다른 일을 할 준비를 해야 하는데...

경험을 더 쌓는방법밖에 없을까요? 일단 구현하고나서 다음에 시간나면 리펙토링을 하는 방법을 써야 할까요?

익명 사용자의 이미지

일단 구현한다에 한표입니다.
워킹하는 코드가 있기라도 해야 뭔가 윗선에 보여주고 뭔가가 되고 있구나를 보여줄 수 있죠.
설계만 하세월 하다가는 신뢰를 잃기 십상이고

익명 사용자의 이미지

저도 동감은 합니다만..

익명 사용자의 이미지

글쓴이입니다.

디자인패턴은 구현전 넓게보고 계획된 것이고
리펙토링은 구현후 좁은 범위의 수정인데
리펙토링시에 전체 구조를 확 바꾸는건.. 아닌것 같고..
어떻게 하는게 좋을지 모르겠습니다.

neocoin의 이미지

리펙토링시에 전체 구조를 변경할수도 있습니다. 다른 구조로 건너갈때 안전하게 건너기위한 여러 방법들이 제시됩니다.

( Amazon.com: Working Effectively with Legacy Code (0076092025986): Michael Feathers: Books 이거 추천합니다. 정말 재미있습니다.)

그래서 작업하다 보면 유닛 테스트없이 자동화된 리펙토링 외에 (Extract Method) 리펙토링 한다는 것을 과연 리펙토링이라고 불러야하는 건지 저는 고민이 됩니다.

익명 사용자의 이미지

좋은 책 소개 감사합니다.

ps. 책 소개를 보다가 갑자기 킨들이 사고싶어지네요. ;;

neocoin의 이미지

말씀을 들으니, 저도 덩달아 킨들 버전을 사고 싶어지는군요.

익명 사용자의 이미지

제게 딱 필요한 책 같군요.

책 소개 감사합니다.

semmal의 이미지

코딩하기 전에 패턴을 발견하는 능력이야 천재적인 직감이나 깊은 경험이 필요한 것이지요.

하지만 디자인 패턴은 발견해서 쓰는건 코딩한 이후가 되는게 맞다고 봅니다.

설령 처음부터 디자인 패턴을 쓸 수 있는 가능성을 찾았다고 하더라도,

디자인패턴을 안쓰고 더 쉽게 해결할 수 있는 방법을 찾는 것이 먼저라고 생각합니다.

------------------------------
How many legs does a dog have?

익명 사용자의 이미지

네. 코딩할땐 반드시 패턴을 적용해야만한다는 강박감은 불필요한듯 합니다.
라고 말하면서도 집착을 하게되네요..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.