anti-pattern이란?

prether의 이미지

Design pattern이라는 용어는 꽤 들어봤어도 anti-pattern이라는 용어는 생경한 분들이 많을 겁니다. Wikipedia에 다음과 같이 정의되어 있네요.

"소프트웨어 공학에서, 안티-패턴이란 흔히 사용되기도 하는 패턴이지만 실무적으로는 비효율적인 그리고/또는 생산적이지 못한 패턴을 말한다."
(원문 URL: http://en.wikipedia.org/wiki/Anti-pattern)

잘 알려진 anti-pattern중 흥미가 가는 것 몇 개를 소개합니다.

1. God object: 하나의 클래스에 너무 많은 필드와 함수를 넣어서 너무 많은 것을 알고 너무 많은 것을 할 줄 아는 객체. 전지 전능한 object라고 비꼬는 의미에서 그러한 이름이 붙은 것으로 보임.

2. Spaghetti code: 이해하기 힘든 구조를 가진 프로그램. 예를 들어서, goto 가 남발한 code. code가 스파게티 면발같이 비비 꼬였다고 해서 붙여진 경멸적인 용어.

3. Hard code: 프로그램 소스 코드에 직접 설정 값이나 입력 값이 삽입된 code. 값들이 마치 hardware circuit처럼 고정되어 변경되지 않는다는 것에 유래된 용어.

4. Software bloat: 프로그램 새 버전이 나올 때마다 사용자에게 필요 없는 기능이 추가되거나 점점 더 많은 시스템 자원을 사용하는 경향을 이르는 용어. bloat는 부풀다는 뜻.

5. Database-as-IPC: database를 IPC(Inter-Process Communication)을 위한 message queue로 사용하는 것. 더 적절한 mechanism이 있음에도 불구하고

* wikipedia에서 CCL 라이센스를 따르라네요.

Forums: 
익명 사용자의 이미지

영어권에서 살고있는 저도, 저렇게 텍스트로 줄창 쭈욱 늘어놓기만하면 읽기조차 싫습니다.
한국인 웹사이트에 영어 원문을 quote 할 때는 약간이라도 번역까지는 아니더라도
간략한 소개정도는 한글로 씁시다.

더군다나 **강좌**게시판에 쓴다는것이
위키에서 그냥 긁어다 붙여 놓고

"Design pattern이라는 용어는 꽤 들어봤어도 anti-pattern이라는 용어는 생경한 분들이 많을 겁니다. "

"잘 알려진 anti-patterns으로는 다음과 같은 것들이 있다네요."

위 두문장 붙이고 끝?

그럼, 나도 한번..........

한국어 위키에서 그냥 긁어다가 강좌게시판에 붙여넣으면 욕먹을테니( 이게 강좌냐? )
영문게시판에서 만만한거 문서 몇개 골라다가

그냥 kldp의 강좌게시판에 copy&paste ㄱㄱ

뭐...한글문장 한,두개 붙여주는 센스~

"XXX 가 아직은 생소한 분들도 있을겁니다."
"위키페이지에 따르면 다음과 같다네요"

prether의 이미지

쓰고나서 보니 너무 성의 없어 보이네요. 수정하겠습니다.

/***************************************
Being the one is just like being in love.
***************************************/

권순선의 이미지

맨 처음에 올린 글이 어땠는지는 모르겠지만 비판이 과하군요. 답글을 쓰신 분이 그럼 좀 좋은 강좌를 한번 올려봐 주시죠?

영문이건 국문이건 간에 어쨌거나 뭐라도 올려주시는 분들이 글쓰신 분처럼 스스로 먼저 나누는 것은 없이 다른 사람을 평가하고 비판하기만 할 줄 아는 분들보다는 이 커뮤니티에 훨씬 더 많은 기여를 하는 분들입니다.

그런 분들이 계속해서 잘 활동할 수 있도록 용기를 북돋아 주고 서로 격려하고 작은 것에도 감사하는 그런 곳이 되었으면 합니다.

익명_사용자의 이미지

위의 익명 사용자입니다만, 자주는 아니더라도, 한달에 4~5번정도는 프밍게시판에 답변을 주로 쓰고,
상대적으로 자유게시판은 댓글은 자주 안달았습니다만,

감사하게도 IP블럭해주셔서, kldp 오는 시간을 줄이고 개인 오픈소스 프로젝트에 조금 더 시간을 할애하고 있습니다.

"뭐라도 올려주시는 분들이 글쓰신 분처럼 스스로 먼저 나누는 것은 없이 다른 사람을 평가하고 비판하기만 할 줄 아는 분들보다는 이 커뮤니티에 훨씬 더 많은 기여를 하는 분들입니다."

kldp에서 많이 나누지는 않더라도, patch도 올리고, 리포팅도 하면서 나눕니다.
본인의 개인 사이트에서 IP를 블럭하는거시야 권순선씨의 권한이라 할 수 있지만,
근거없이 타인을 넘겨집고 비방하기보다는

"... 글쓰신 분처럼 ..."
이런 문구는 빼고, 일반적인 비판을 하시는게 나으리라 생각합니다.

여기부터는 서명입니다.
"저는 인터넷에서 숨어서 정확한 의견을 피력하는 자들과 말을 섞습니다."

익명 사용자의 이미지

음... 해당 글이 과연 "강좌" 라는 게시판에 적합한 내용인지 의문이 드는군요... 흠

익명 사용자의 이미지

한두줄~10여줄 => 팁.
100여줄 => 고찰(?)
그 이상 => 강좌
정도가 어울릴 것 같고요. 블로그를 한번 신청해보시는 것도 좋을 것 같습니다 ^^
물론 뭐 짧다고 강좌가 아닐 이유는 없을것 같지만요.

옛날의 COBOL 혹은 FORTRAN에서 goto는 거의 밥먹듯이 사용되었기때문에 이게 상당히 코드를 난해하게 만드는 원인이되었지만,
요새만들어진 코드는 왠만해서는 goto보기 힘듭니다만, 어쨌거나...
다양한 요인이 스파게티코드를 만드는 것 같습니다.

익명 사용자의 이미지

위 까지는 이러이러 하니까 짜기 힘들더라... 라는 개념이지만
아래는 본격적 버전입니다
http://freeworld.thc.org/root/phun/unmaintain.html?repost=forPosterity

익명 사용자의 이미지

최고입니다. ^^

bookworm의 이미지

3년 전쯤에 IPC가 제대로 되지 않아 응급처치로 DB를 큐로 썼었는데 이 글을 보니 참 잘 못 된 선택이었던 것 같습니다.

B/o/o/k/w/o/r/m/

snowall의 이미지

제가 주로 쓰는 패턴이군요. -_-;

스파게티는 느끼한걸 좋아합니다.

피할 수 있을때 즐겨라! http://melotopia.net/b

익명 사용자의 이미지

내용은 유익하고 좋기만 하구만...
댓글들이 왜 이모양인가요...

세상에 나 빼고 모든게 다 스승이지요.
강좌랑은 거리가 멀다거나 성의가 없다느니...

내가 읽고 배우면 강좌고
내가 성의있게 읽으면 발로써도 성의있는거 아닌가요?

댓글 달기

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