프로그램 설계에 대해서 헬프

icabord의 이미지

안녕하세요.

월요일 아침부터 질문을 올립니다.

다름이 아니라, 다들 아시다시피 자료구조, 알고리즘 같은

어떻게 하면 프로그램을 효과적으로 짤 수 있는지에 대해서는 거의 배우셨을 거라고 봅니다.

저 또한 저 두 과목을 배웠으며, 잘 안다고 할 수 없지만 어떤 것이 있으며 어떤 것을 말하고자

하는 지는 알고 있습니다.

그런데;;

자아비판 일 수도 있지만, 제가 프로그래밍 한 것을 보면 제가 봐도 절대 좋은 프로그램이라고 할 수는 없는 것

같습니다.

결과가 나오지만, 흔히 말하는 하드코딩과 가독성이 떨어지는 코드를 보고 있자면 소질이 없는가보다 라는 생각도 드네요.

제가 궁금한 것은

어떻게 하면 프로그램을 잘 짜는가, 그 무엇보다도 설계를 잘할 수 있는가 입니다.

커널 소스를 많이 보라 라던가, 짬이 해결해 준다 라는 답변도 환영합니다.

그냥 대충이라도 답변 부탁드립니다.

좋은 하루 되세요.

pizza1977의 이미지

자신의 플그램에 대한 냉철한 분석을...

따라하기부터 시작하라고들 하죠. 커널을 보라 잘만든 소스를 보라 그리고 따라하라~~~

-------------
포탈이는 불사신

-------------
포탈이는 불사신

samsee의 이미지

개발 단계에서 자신이 가장 취약한 곳이 어디인지 알아보는게 먼저일 것 같네요.
개인적인 경험으로는 설계를 마치고 개발을 하다 보면 설계상에 결함이 많이 발견되곤 했습니다. 그것도 이미 코딩이 어느정도 진행된 상황이라서 뒤엎기도 곤란한 시점에서요. 여러가지 책을 보던 중 코드 컴플릿 2에서인가 발견한게 상세 설계에 대한 것이었죠. 그걸 보면서 생각이 든게 제가 바로 취약한 곳이 상세설계 없이 설계에서 개발로 뛰어드는 점이더군요.
그래서 그 부분을 보완했습니다. 설계를 마친 뒤에는 꼭 설계에 대해 검증하고 조금 더 깊이 살을 붙여 봅니다. 그러다 보면 이런저런 설계상의 결함들이 나타나더라구요. 천부적인 소질을 가지신 분들이야 A(nalyze?)에서 바로 D(evelopment?)로 건너가실 수 있으시겠지만 저 같은 범인은 A, B, C, D 모두 찬찬히 밟는 편이 그나마 고통 없이 프로그램을 완성하는 방법이라고 생각하게 되었답니다.

다시 한번 말씀 드리면, 자신의 '결함'을 먼저 알아보세요. 그 다음 그걸 매꾸는 노력이 필요하겠죠.
Painless Programming 하시길 ㅋ

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.