어제 주석에관해 여기에 질문을 올렸는데 반응이 상당히 스펙타클하더군요
이글에서 유동닉 asdf가 접니다. 프갤에 codesafer같은분이 절대고수로 여겨지고 조언을 준다는게 너무 어이가없어서 고정닉하나 팠습니다.
저는 저분이랑 싸울 마음도없고 하나하나 따져서 다퉈봤자 득이될게 없으므로 그냥 무시하고 주석잘쓰는 가이드 하나 써봤습니다.
-----------------------------------------------
주석이란 무엇이고 어디에 필요한가?
주석이란건 코드를 자명하게 만들기가 불가능한경우 이해를 돕기위해 쓰는게 주석입니다. 이 애매모호한 이유에서인지 많은분들이 잘못된 생각을 가지고계신데, 코드자체가 한눈으로 봤을때 이해가 가능하면 당연히 주석은 필요없습니다. Clean Code라는 유명한 책속에는 저자 Robert C Martin이란분이 이런말을 했지요.
The proper use of comments is to compensate for our failure to express ourself in code. Note that I used the word failure. I meant it. Comments are always failures. We must have them because we cannot always figure out how to express ourselves without them, but their use is not a cause for celebration.... Every time you express yourself in code, you should pat yourself on the back. Every time you write a comment, you should grimace and feel the failure of your ability of expression.
번역해보면 "주석을 쓰는 이유의 정석은 우리가 코드를통해 우리가 원하는 목적을 완벽하게 표현하지 못하기때문이다. 그러니까 주석은 실패를 일컫는다" 이런뜻입니다.. 여기서 많은분들이 "어 그럼 코세가 한말이 맞는거 아님??" 이라고 하실텐데 끝까지 읽어봅시다. "하지만 우리는 매번 주석없이 코드만으로 우리의 목적을 표현하지 못하며 그럼으로인하여 주석이 꼭 필요하다."
그러니까 쉽게말해서 당신이 누구가 됬건 어떤 능력자가되었던 코드만으로 당신의 풀목적을 설명하기에는 부족하다는겁니다. 예를 들어서 코드로 이 변수를 이렇게 저렇게 쉬프트 해서 어디에 저장해라라고 쓸수는 있지만 그짓을 왜하고있는건지는 코드로 간결하게 쓰기 어렵단말입니다. 이럴때 주석이란 표현도움이를 사용해서 코드의 가독성을 높혀줍니다. 표현력으로 따지면 당연히 자연언어가 코드보다 훨씬 위겠죠?
"나는 진짜 코딩 졸라잘해서 그딴거 필요없다" 하시는분들.. 인터넷에 둘러보시고 내로라 하는 프로그래머들이 쓴 코드중 주석이 없는 프로젝트가 존재하는지 한번 보세요.
크롬 브라우저 코드 - https://chromium.goog1esource.com/chromium/src.git/+/master
안드로이드 커널 코드 - https://android-review.goog1esource.com/#/admin/projects/
텐서플로우 코드 - https://github.com/tensorflow/tensorflow
리눅스 커널 코드 - https://github.com/torvalds/linux
아폴로11 우주선 코드 - https://github.com/chrislgarry/Apollo-11
비트코인 코어 코드 - https://github.com/bitcoin/bitcoin
잘 만들어지고 인정받는 프로젝트중 주석없는 프로젝트 없습니다.
구체적으로 어떤 상황에서 주석을 사용해야하나?
- 코드를 봤을때 뭘하는지는 알겠으나 그걸 왜 하고있는지 바로 알기가 쉽지않을때
- 여러가지 방법으로 구현가능한 코드에 경우에는 왜 구지 이 방식으로 구현했는지 바로 알기 어려울때
- (이걸 안하면 후에 다른사람이 (또는 미래의 자기 자신이) 당신의 코드를 자기 방식대로 고치려 할수있음)
- 상대방이 코드리뷰를 했을때 '아.. 이건 물어볼거같다' 하는게 있을때
- 상대방이 코드리뷰를 했을때 실제로 물어본것이 있을때
- (상대방이 갓뉴비가 아니라면 분명 당신의 코드에는 문제가 있는것. 조금더 간결하게 바꾸던가 안되면 주석 추가.)
- (상대방이 갓뉴비가 아니라면 분명 당신의 코드에는 문제가 있는것. 조금더 간결하게 바꾸던가 안되면 주석 추가.)
구체적으로 어떻게 쓰면되나요?
일단 주석은 크게 TODO, 다큐멘테이션, 구현 설명 이렇게 3종류로 나뉩니다. TODO는 뭐 알아서 이해가 되실테니 패스하고.
다큐멘테이션은 보통 함수나 클래스 전에 이안에서 무슨일이 일어난다거나 리턴발류가 일컫는 의미등등을 써놓는겁니다. 급하게 찾은 예제를 하나 봅시다
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/cc/framework/cc_op_gen.cc 라인 294 에보면 이렇게 되있습니다.
// Returns a <string, bool> pair. The string is the C++ type name to be used for
// attr_type when defining an object of that type. The bool is a flag to
// indicate whether to treat the type as const when accepting the C++ type as an
// argument to a function.
std::pair<const char*, bool> AttrTypeName(StringPiece attr_type){
static const std::unordered_map<StringPiece, std::pair<const char*, bool>,
<style type="text/css"><span style="font-size: 9pt;"> p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'; color: #454545} span.Apple-tab-span {white-space:pre} </style><span style="font-size: 9pt;">
StringPiece::Hasher>
주석에서 리턴값을 제시하고 그 리턴값을 어떻게 사용하는게 본 저자의 목적 (intent) 인지를 알수있습니다. 이 주석이 없었다면 당신은 아마 코드 전체를 흝어보고 리턴벨류가 어디서 우러러나오는지 역주행을 한다음에나 알수있을겁니다. 역주행 후에도 리턴벨류인 1번째 인덱스를 보고 이건 뭐지라고 생각해봐야 합니다. 차이가 느껴지시나요?
이와 다르게 구현설명은 보통 함수안에서 쓰입니다. 이번에는 https://github.com/kokke/tiny-AES128-C/blob/master/aes.c 라인 252으로 가봅시다.
AES는 암호화 알고리즘인데 딱히 이분이 쓰신 파일전체의 주석내용들이 완벽히 간결하거나 좋은 예제는 아닙니다만 코드는 대충 간결하고 보기 쉬우니 한번 봅시다.
ShiftRows()라는 함수를 보면 state라는 포인터를 가지고 마구 비비는걸 보실수 있습니다. 물론 코드를 읽으고 분석해보면 뭘하는지 의도를 눈치챌수있지만
주석이있으므로 저자의 목적 (intent)을 이해하고 다음 코드로 바로 넘어가거나 아니면 저자의 목적이라는 문맥을 이해하고 코드를 더 쉽게 분석할수 있습니다.
시간상 예제가 이거밖에없고 가이드 첨써보는거라 설명이 모자랄텐데 그래도 도움이 되셨으면 좋겠내요. 도움된다는분이 계시면 내일 수정하고 더 올리겠습니다.
tl;dr - 존나기내 안읽음 요약좀
주석은 필수입니다.
4) 자연언어에 관해서 말인데 그래서 니가 내 글을 오해한거나 저 외국어 문장에 대한 주제 해석이 판이하게 다른건 자연어 문제아님? 소스코드에 그런 문제가 있어?
잘 만들어진 함수하나는 함수 크기가 평균 10라인이 안돼. 근데 주석 포멧을 일일이 도입하면 섹션 표기, 함수 설명, 리턴값, 구조 설명으로 1200줄 넘는게 정상이야.
그래서 니가 번호 몇 개를 들었지만 하나 하나 드니까 내 글이 잘못된게 뭐가 있음? 니가 내 글 싸잡아 깔 꺼리가 됨?
저는 님처럼 오랜경력은 없지만 상사가 잘못했다라고 생각하면 바로 주저없이 말할수있는 회사에서 근무하고있고 주석을 죄악으로 표현하는건 옳지않다고 생각하여 이글을 올리게되었습니다. 글위에 거친말은 수정이 불가능하여 이해부탁드리겠습니다;
니가 아는걸 논하는건 좋고 다른 생각을 논하는것 좋은데, 정당한 근거없이 싸잡아 내 글을 깐건 파렴치한 행동이야.
자연언어에 관해서는 물론 표현이 자유로운만큼 오해가 있을수있는데 오해를 최대한 낮추고 표현력을 높혀서 주석을 달수있는자가 주석을 잘쓰는자가 아닐까 생각되내요
토발즈가 되었든 누구가 되었든, 변화하는 언어 문법에 일일이 적응하며 살진 않아. 하지만 난 c++0x 에 멈춰 있던 내 코딩스타일을 바꾸려고 노력했지. 딱히 내가 토발즈보다 프로그래밍 못한다고 생각하지도 않아.
보고 잘하는 직원이 일잘하는 직원이 아니라, 보고할꺼리 없게 만드는 직원이 일잘하는 직원이야.
정당한 근거는 이글로 나름 입증했다고 생각하는데요. 주석을 죄악으로 표현하는건 옳지않다고 생각한다했고 이글에서 왜 그런지 해명했습니다
하지만 네 번역은 편협했고, 저 책은 오래전에 쓰여져서 현재의 언어상황을 모두 대변하진 못하고, 저 책 저자만큼 혹은 그 이상의 경험을 내가 가지고 있지.
근데 넌 내 글을 제대로 읽을 생각도 않고 근거를 제대로 남기지도 않고 싸잡아서 내 글을 씹고 내 닉을 거론했지.
뛰는놈위에 나는놈있듯 당신이 얼마나 코딩을 잘하길래 리너스 토발즈보다 잘한다고 생각시는지는 모르겠으나 님보다 프로그래밍 잘하는분 수두록할거구요. 본론으로 돌아가서 그분들도 다 주석쓰실겁니다.
껄껄 데려와봐. 그럼. 수두룩하다니깐.
수두룩하다는데 못 데려올것 없겠지?
말 지켜라. 니가 데려오면 나도 말 지킬테니.
리누스 토발즈 보다 내가 잘한다고 말하진 않았음. 못한다고 생각하지 않는다고 했지. 어차피 전문가 그룹은 자기 스타일이 있고 자기 도메인이 있게 마련이야.
니가 내 말을 조금 바꾸는데는 악의성이 보인다는거지.
첫째로 너는, 너 스스로가 나의 상대가 되지 못한다는데 부끄러워야 함.
둘째로 너는, 그 수루룩하다는 비하발언에 책임을 져서 수두룩한 고수들 데려와야 함.
제가 1,2,4,6,7번호 꼭집어서 반박한건 코세님도 진정이되시고 아해라던지 좆밥이라던지 그딴식으로 계속욕하지않아서 사람대 사람으로써 예기한거구요. 저는 코세님 글 여러번 정독했고 아무리 읽어도 아닌거같아서 올렸습니다만
세째로 너는, 내가 말한 것을 비약하고 치부해버리는 그 태도를 고쳐야함. 안고쳐도 됨. 그럼 내가 맘껏 욕해줄테니.
저건 꼭집어서 반박한것도 못되지.
니 글 고대로 다시 리와인드 해볼까?
저도 딱히 님의 상대가 되지 않는다는 말은 안했는데요 ㅎㅎ 자만감이 하늘을 찌르시내요
그럼 코드를 갖고 오시지.
네 수준을 보자꾸나.
니 자만심이 하늘을 찌르는지 내가 찌르는지 대 보면 알 것 아님?
그리고 번역이 편협했다는건 인정할수가 없는데.. 어디서 편협됬다는건지? 제가 마지막 문장 2개를 남겨둔건 사실이나 전체적으로 봤을때 편협한건 없습니다. 영어교수님에게 물어보시든 누구한테물어보시든 인정할겁니다
주석이 얼마나 오해의 여지가 없게 잘 달렸는지 감상해주마.
자꾸 코드를 갖고오라하는데 무슨 코드배틀도아니고 ㅋㅋㅋㅋㅋㅋㅋ
CTO라시던데 실제 뭐하시는분이여서 이렇게 시간이 널널한지는 모르겠으나 저는 바쁜관계로 이만..
잘 도망가네 : ) 이딴 똥글 쌀 정신은 있으면서~
동의 안하실지몰라도 다른분들에게는 도움이 될거라 생각하고 코세님입장에서는 도움이 안될것같으면 그냥 딴글 읽으러가시죠
그건 니가 내 글 싸잡아 씹으며 트롤이라고 말하는 대신 니가 해야했을 행동 아니었을까?
글고 니가 자신있으면 덤벼보라고. 난 20년쯤 게임프로그래머였고, 현재 이미지프로세싱, 임베디드, FPGA 로직 코딩을하고, 기계설계 광학설계를 하고 있지.
마지막으로 제 태도 예기하셨는데 업계에서 30년 경력이면 나이가 꽤 될실텐데 코세님 태도부터 고치시죠? 남을 얕잡아보는거, 자만감 쩌는거, 자기가 잘못했을때 인정하지 못하고 남탓 돌리는거..
의료 바이오 쪽에서 12년 정도 업력을 쌓았고, 내가 만든 제품이 의료쪽 세계시장 점유율 12% 도 찍음.
나더러 트롤이라는 애한테 줄 예의는 없다네.
누가 누구더러 먼저 태도를 고치라는거야? 푸합
저는 코세님글에 동의하지않아서 이글낸거구요 코세님도 주석이 아예나쁜건 아니라고 예기도 하셨는데;;
니가 트롤이라면서 먼저 글을 시작해서 랠리가 길어진거잖
그렇다고 니가 딱히 예제로 충분하다든지, 코어코드랑 격리해야 한다든지 하는 다른글들 읽어본것도 아니면서
아니 대체 누가 예의를 차려야됨? 나더러 트롤이란 애한테 아 얘 개고수님 굽신 이래야됨?
트롤은 프갤이 트롤이냐고 물어본거구요. 주석이 죄악이다 라고 써있는데 프로그래머 입장에서 그런 질문이 나오는게 정상아닙니까?
니 실력을 보여봐 자신있으면 : ) 내 소스코드 예제수준이라도 잔뜩 올려져 있으니 깔려면 까고~
그 앞의 랠리가 있었지 물론. 넌 글하나에 모든 생각 다 담아내냐?
누가 봐도 그건 나 까는 글일껄? 아님?
근데 뭔 예의를 차려.
레파토리가 계속 같내요 ㅋㅋ 저는 이만
클린 코드라는게 코드 밀고 주석으로 채우란 소리임? 나 참 웃겨서.
니 레파토리는 소스코드 안내놓고
개소리 후 자기합리화하고 도망가는거지.
왜 내가 오만한지 아닌지 니 실력으로 증명 못함?
난 니가 소스코드 내 놓으면 털어줄 수 있음.
말은 아무나하지 코드 내놔가 니가 좋아하는 토발즈가 한 말이니 행동에 옮겨 보도록.
지가 지랄거리더니 갤에서 예의 드립하는게 우습지도 않아 하는 말이지. ㅋㄷ
난 겉멋든 병신들 털어주는 전문이니까. 언제든 도전 환영한다. 똑바로 공부하는 애들한텐 예의바르게 대함.
뛰는 놈 위에 나는 놈 있다는, 기는 너랑 나를 비교하는거야. 똑바로 쓰도록해. 이 말이 꼬우면 진짜 난 놈 데려오든지. 넌 자신없는 듯 하니.
댓글 꿀잼이네 ㅋㅋㅋㅋㅋ 근데 난 글쓴이말에도 코세 말에도 동감한다.. 개인마다 차이가 있는듯 강요는 하지말자구
글쓴이의 해석이 편협하다는 점에 대해 동의. 해당 텍스트에서 저자가 주석의 필요성을 인정하고는 있으나 어긋나는 점이 있다고 생각됩니다.
텍스트 자체만을 놓고 봤을 때 주석이 필요함과 동시에 실패로서의 주석이 강조되고 있어서 코세님 주장에 대한 반박 자료로서는 부적합하다는 인상이 강합니다. 또한 해당 텍스트가 쓰여졌을 당시 C++의 표현력에 어느 정도 한계가 있었음에 대한 논거도 있는데 글쓴이가 토론을 하려는 게 맞다면 적어도 해당 부분에 대한 언급이라도 있어야 할 듯.
영어가 모국언데 한국어가 안되서 저런 번역을 하는건가
이글 그냥 인기글떠있어서 쭉 보다보다가 공감되는 부분이있어서 댓글남김.
내경우엔 잡개발(;;;)을 많이 하는편인데..웹플그래밍 데스크탑앱 머 이런거.. 주제도 없이 이것저것 다하는편임..
근데.. 내경우엔 이랬다. 4~5개월전에 신나게 코딩해서 딱 짜논 프로그램이있었는데
아 이거 댓글 개불편하네;; 여튼.. 그런프로그램이 있엇는데 다른쪽 일을 맏아서 코딩을 또 신나게 했단말이지... 근데 이것 두개가 연장선상에 있어서 둘이 상호작용하면 좋겠더라구.. 그래서 두 프로그램을 엮어서 돌렸는데.. 이게 오류가 나더라.. 원 데이타를 참조하는곳 코드가 바낀거지..
주석은 내생각엔 말이야.. 아니 내 입장에서는 내가 편하기 위해 쓴다라고 생각해.. 거 주석 꼼꼼하게 안적고 빨리 끝내겠다고 그러다가 하루 날린거 생각하면.. 아오... 여튼 글쓴이야 잘 봤어. 사실 머 저기 나오는 프로젝트들 직접적으로 가공해서 뭐하고 그런건 아니라 얼마나 대단한건진 모르겠는데.. 내경우엔 그랬다. 리턴값 이야기 나올때 개공감함 ㅇㅇ.. 개인 플젝에서는 주석은 내 자신을 위한거라 생각함.. 단체는 말할것도 없지.. 주석은 코드의 연장선상에 있다고 생각함..
종종 좋은글좀 올려줘.. 디시 첨하는데 재밋네 좋은글이 많아서
코세는 다좋은데 항상 코드좀 가져와봐 하는게 문젠듯
말은 아무나 하거든.
나는 네가 아니고, 너는 내가 아니다. 그래서 사람의 생각은 다 천차만별이고 능력도 천차만별이다. 심지어 1년전의 나와 지금의 나, 1년후의 나도 꽤나 다름 사람이다. 다 다른 놈들을 소통시키며 이어주는 것 중 가장 잘 만든 것이 "언어"고, 컴퓨터와 대화하기 위해 만든것이 프로그래밍 언어다. 그런데 컴퓨터하고만 대화한다면, 주석 따위는 1byte도 필요없다. 그래서 컴파일러는 주석은 당연히 거른다.
그런데 이 "대화"는 컴퓨터하고만 하는게 아닌게 현실이지. 앞서 언급한 "다른 놈들"이랑도 해야해. 그놈들하고 대화하고자 한다면, 주석이 없이는 힘들어. "필요한 주석은 달아도 된다."는 언급자체가 불필요한거야. 그건 애초에 "주석이 필요없다"는 말을 성립시키지 모하니까. 프로그래밍을 전세계에서 혼자만 하고 혼자만 개발할거면 주석 안달아도 누가 뭐라고 안해. 혼자 할거 아니면 주석을 달아서 다른 사람에게 내 뜻을 전하고 상대의 뜻을 전달 받아야하는 거지. 내가 얼마나 잘났어도 전혀 상관이 없어. 나보다 못난 사람도 코드를 읽어야하고, 비슷한 실력이라도 남이 짠 코드는 주석없이 이해 못할수도 있는게 문제인거니까.
그냥 "주석을 최소한으로만 달아라." 이렇게만 했으면 끝인데, 굳이 자기 의견을 관철시키려고 "달지마라/달아라" 이렇게 이분법으로 나뉘기 시작한게 문제 아닌가?
코세는 이해가 안되는게 자기가 실력이 높다고 해서 자기보다 실력이 낮은애한태 배울점은 단 하나도 없다고 생각하는 태도임
5살먹은 어린 아이한태도 배울 점이 있다고 했는데
코드 가져와보라고 엄포놓고 못가져오면 쫄튀, 가져왔는데 자기보다 못하면 '넌 이게 문제고 이래서 실력이 나보다 낮으니 짜져있어'로 일축
자고로 이 주석 논쟁에 국한된 말이 아니라 모든면에서 그럼. 나도 윾동으로 계속 활동하면서 니 코드 많이 봐왔고 니 실력이 존나쩌는것도 인정하고, 실제로도 많이 배웠지만 하수에게 배울 게 없다는 태도는 고쳐야함.
니 프밍 실력이 탑수준인 것 잘 알지만, 결국 신은 아니잖아? 정상급 바둑 기사들도 이제 막 등단한 1,2단 신인한태 지는 일이 부지기수지만 어떤 바둑팬도 그 한 게임을 보고 신인이 더 잘한다고 생각하지는 않아.
뭔가 말이 다른쪽으로 샜는데, 하여간 하고싶었던 말은 너 킹왕짱 맞는데 그렇다고 '코드 가져와봐'라는 태도는 잘못됐다는걸 말하고싶었음.
난 하수에게도 많이 배움. 싸가지 밥말아먹은 애한텐 한 톨도 안 배움.
하수라 욕짓거리하는게 아니라 트롤이라기에 욕하는거임.
것두 내가 번호 하나 하나 넘버링해서 따져뒀더니 생까고 쪼르륵 새글 쓰는 꼬락서니가 존나 짜증나서 그런다 왜?
내가 코드 가져와라 할땐 존나 대가리에 든거 없으면서 잘난척 뻐대며 어그로 끄는게 보일때야. 아무 한테나 코드 가져오라 하든?
저 번역 그 자체가 그냥 자기 합리화야. 책에서 이야기하는거랑 상관없는데다, 쟤가 뭐라든, 책의 주제가 그게 아닌데, 한 애더러 너 책안읽었지? 라고 말한거 안봄?
내가보기엔, 그리고 여기 번역 관련해 댓글 단 몇몇이 보기엔 이 글 쓴 애가 제 멋대로 문장을 번역하더란거지. 근데 그새끼가 영어 잘한데. 나 참 웃겨서.
내가 3년 반 갤질하는 동안만 근 열 댓번은 주석에 대한 논의가 오고 갔고, 내가 주석에 대해 반대하지만 doxygen 에 대해선 관용한다는 댓글 적은적도 있었고, 그 후 doxygen 똥들을 수 없이 보다 보니 이건 안되겠고, 자신과 성장할 코드를 작성하면서 주석으로 자신의 선명하지 못한 코드를 가리는게 오히려 독이 되니까 주장을 하는거지.
이 샛기들은 만만한게 나냐?
글쓴이가 오만방자를 떠는듯 보이니 응징하는거지. 실력없다고 까부수는거야?
니들도 임마 누군가 지칭해서 까댈꺼면 니들이 얼마나 잘났나 스스로들 드러내놓고 떳떳하게 까. 유동가지고 짱나네. 그래도 글 쓴인 고닉판거 하난 대견하다.
쥐 뿔 자기 실력 보여준것 없는건 가짢지만. 쉬발 말은 아무나 하지. 초딩도 초절정 해커인척 하겠다.
코세말도 맞고 글쓴이도 맞는거 같은데 너무 싸우지말자
아니 자꾸 번역 잘못했다고 몰아가는데 정말 답답하내요.. 다치우고 어쨌거나 주석이 필요하다는 예기아닙니까?? 자꾸 이책에서 주석은 실패다라는 문맥을 설명하자면 외국에서는 한국보다 "주석써 두번써 꼭써라" 이런경향이 매우 심해서 쓸대없는 주석좀 자제하라고 책내용이 저런거에요. 사람들이 하도 주석주석 이러니까 책에서는 "주석은 생각하는거처럼 그렇게 좋은게아니다, 코드를 잘쓰고 주석을 줄이자라는" 취지인데..
멋대로 번역한거 없구요 여기서 한분두분 동의하신다고 몰아가지말고 진짜 영문과 교수한테 물어보시던지요
번역 이야긴 벌써 다른 글에 한바탕 지나갔고, 그래서 시방 저 텐서플로우 소스코드가 주석의 잘된예라고?
두번말할필요 없이 이유는 설명해드렸습니다만
개념글 젤 최근 글 읽고 공부좀 해라.
저는 주석이 꼭 필요해요. 보통은 주석이 코드를 크게 더럽히지 않으니까요.
저는 codesafer 님의 의견에 동의하지만, codesafer 님의 극단적인 의미 선택이 반감을 불러일으키긴 했다고 생각합니다. codesafer 님의 말대로 글쓴이가 다소 편협한 사고 방식이 있고 현재 자신이 하는 일에 대해서 무엇이 좀 더 좋고 옳은 방향인지 인지하지 못한 상태처럼 보이는게 사실입니다. 하지만 이러한 상태에서 서로가 과격한 말로 서로의 심기를 건드리는 것은 결국 어떤 방식으로든 좋은 결과를 낳지 못한다고 생각합니다.
일단 codesafer 님의 말대로 좋은 코드는 주석이 필요없을 정도로 간결하게 짜여진 코드이며 이러한 코드는 주석이 쓰레기가 될 정도로 그 자체의 간결성을 띈다는 것에 동의합니다. 그리고 글쓴이가 몇개 괜찮은 인용안을 가지고 온것도 사실이라고 생각합니다. 하지만 글쓴이의 결론에는 동의할 수 없습니다. 저는 주석이 필수가 아니라고 생각합니다. 주석은 자신의 능력부족으로 code의 간결성을 확보하지 못했을 때 타인에게 이해를 돕기위해서 쓰거나, 상대방의 코드를 약간의 인내심도 가지지 않고 알고 싶어하는 사람들에게 자연어로서 설명을 하는 것이라고 봅니다.
결국은 자신 코드의 부족함을 좀 더 쉬운 방법으로 타인에게 이해를 시킬려는 것이고, 타인의 부족한 지식을 긴 말로써 보완해주는 방법 중 하나라고 생각합니다. 주석은 수준이 높고, 타인에 대한 이해도가 높은(그래서 타인이 봐도 알아보기 쉬울 정도로 작성을 간결하게 하는) 프로그래머가 사용하는 것이 아니라. 아직은 부족한 점이 많은 프로그래머가 자신의 코드를 자연어로써 대변하고 싶을 때, 능력이 부족한 타인에게 별 다른 수고없이 이해를 시키고 싶을 때 쓰는 것이라 생각합니다.