구조적으로 프로그램을 짜고 싶습니다. ㅠ_ㅠ

vamf12의 이미지

전공은 아니고, 취미로 프로그래밍을 쭈욱 해왔는데, 돌아 서서 생각해보니, 자신의 소스에 대한 후회가 밀려 옵니다.

항상 구조를 먼저 생각하고 프로그래밍을 한다고 생각했습니다.

특히 메모리 구조, 자료 구조를 먼저 정하고 동작을 결정하는 형태로 짜왔답니다.

그동안 쌓인 소스들을 CVS로 정리를 해봤는데...

비슷한 내용에 중복되는 경우가 엄창나게 많더군요.

OOP쪽이야 시간이 지나면서 점점 클래스가 완성되는 형태로 발전했지만,

함수들의 경우에는 다들 심각할 정도로 COPY&PASTE형태로 사용했었습니다.

코드가 반복되고, 조금씩 다른 코드가 생성되고, 파일이 늘어가고...

물론 애초에 SP가 코드의 재사용성과는 관련이 없다고는 하지만...

SP쪽을 다시 한번 공부 해볼까 하는데, 좋은 책이 없을까요? OOP쪽은 읽어 볼 책들이 널려 있는데...

좋은 책 추천 부탁 드립니다.

익명 사용자의 이미지

중복을 제거하고 재사용을 쓰는 어떤 이론이든 딱 하나의 수학적 도구에 의지하게 됩니다.

Abstraction 즉, 추상을 이야기하죠.

추상이란 아주 쉽게 이야기하면 이름을 붙이는 겁니다.

이름을 붙이는 이유는 복잡한걸 단순하게 만들고, 나중에 다시 쓰기 위해서이죠.

프로그램을 짤 때 두 번이상 쓰이는 상수, 변수, 코드에 무조건 이름을 붙이는 연습부터 하세요.

특히 코드의 경우에 동작하는 코드가 비슷할때 뿐만 아니라, 의미가 비슷해도 이름을 붙이고, 코드자체의 텍스트가 비슷해도 이름을 붙일 수 있도록 연습해보세요.

의미로도 모양으로도 중복된 코드가 없는데다가 알기 쉽게 짜여져있다면 이미 아주 훌륭한 코드가 되겠죠.

익명 사용자의 이미지

중복을 제거하고 재사용을 쓰는 어떤 이론이든 딱 하나의 수학적 도구에 의지하게 됩니다.

Abstraction 즉, 추상을 이야기하죠.

추상이란 아주 쉽게 이야기하면 이름을 붙이는 겁니다.

이름을 붙이는 이유는 복잡한걸 단순하게 만들고, 나중에 다시 쓰기 위해서이죠.

프로그램을 짤 때 두 번이상 쓰이는 상수, 변수, 코드에 무조건 이름을 붙이는 연습부터 하세요.

특히 코드의 경우에 동작하는 코드가 비슷할때 뿐만 아니라, 의미가 비슷해도 이름을 붙이고, 코드자체의 텍스트가 비슷해도 이름을 붙일 수 있도록 연습해보세요.

의미로도 모양으로도 중복된 코드가 없는데다가 알기 쉽게 짜여져있다면 이미 아주 훌륭한 코드가 되겠죠.

익명 사용자의 이미지

중복을 제거하고 재사용을 쓰는 어떤 이론이든 딱 하나의 수학적 도구에 의지하게 됩니다.

Abstraction 즉, 추상을 이야기하죠.

추상이란 아주 쉽게 이야기하면 이름을 붙이는 겁니다.

이름을 붙이는 이유는 복잡한걸 단순하게 만들고, 나중에 다시 쓰기 위해서이죠.

프로그램을 짤 때 두 번이상 쓰이는 상수, 변수, 코드에 무조건 이름을 붙이는 연습부터 하세요.

특히 코드의 경우에 동작하는 코드가 비슷할때 뿐만 아니라, 의미가 비슷해도 이름을 붙이고, 코드자체의 텍스트가 비슷해도 이름을 붙일 수 있도록 연습해보세요.

의미로도 모양으로도 중복된 코드가 없는데다가 알기 쉽게 짜여져있다면 이미 아주 훌륭한 코드가 되겠죠.

ssehoony의 이미지

Refactoring 을 좋아하는 사람들 왈:
개발하다 보면 중복되거나 구조가 나뻐질 수 밖에 없다. 이유는 현 단계에서 앞을 내다보고 구조를 잡았었다.
예상이 100% 일치하는 것은 불가능하기 때문이다. 그렇기 때문에 주기적으로 Refactoring 을 해서 정리를 해줘야 한다.

현실적으로 리팩토링이 대안이라고 봅니다.
아무리 미래를 내다 보고 구성해 봐도 막상 그 때가 되면 현실은 이전 구조를 외면하는 경우가 많자나요.
주기적으로 리팩토링을 통해 재구성하므로서 앞으로 추가 개발을 편리하는게 하는 쪽이 좋을 듯 하네요

댓글 달기

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