스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음 (9) - 인덴팅 & 코멘팅 (주석)

스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음 (9) - 인덴팅 & 코멘팅 (주석) 본문

스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음 (9) - 인덴팅 & 코멘팅 (주석)

KRONNA 2016.07.08 10:00


잘 지내셨나요? 저번 주 꽤 어려운 프로그래밍 테크닉을 많이 다뤄서 기둥 수리 과제에서 스타일보다 기능성에 집중하라고 조언드렸습니다. (기억을 상기시켜드리기 위해 다시 설명드리자면 "코드가 원하는 작동을 하는가"가 기능성, "코드를 남들이 봐도 읽고 이해하기 쉬운가"가 스타일입니다). 하지만 어렵고 복잡한 코드일수록 스타일의 중요성은 높은 법이죠. 이번 글에서는 코드를 읽기 쉽게 도와주는 두가지 테크닉 "인덴팅"과 "코멘팅"에 대해 배워보겠습니다.





위의 두가지 코드는 동일한 기능을 수행합니다. 컴파일 (검은색 달리는 사람 아이콘) 버튼을 눌러도 둘 다 완벽히 작동하죠. 하지만 오른쪽의 코드는 두번째 while 루프와 if문이 첫번째 while 루프 안에 있다는 것을 한 눈에 쉽게 볼 수 있게 해줍니다. 이 뛰어난 가독성은 "인덴팅"으로 이뤄낸 스타일의 효과이죠. 인덴팅은 간단한 규칙을 가지고 있습니다. {}로 표현하는 코드 "블락" 안의 내용을 한번의 tab으로 인덴팅합니다. 위 코드 예제에서는 public void run()의 블락 안에 있는 모든 내용들이 한번의 인덴팅으로 오른쪽으로 밀려있고, 첫번째 while 루프의 블락 안에 있는 모든 내용들--(while 루프 한개와 if문 한개)--이 또 한번의 인덴팅 (총 2번의 인덴팅)으로 오른쪽으로 밀려있습니다. 




스탠포드의 CS106 과정에서는 tab 인덴팅을 가르칩니다. 하지만 실리콘벨리에선 인덴팅을 tab으로 하느냐 space로 하느냐에 대한 토론이 끊임없이 이루어지고 있기 때문에 여러분에게 알려드리고자 합니다. tab은 한번만 눌러서 충분한 거리를 인덴팅 할 수 있어서 속도가 빠르다는 장점이 있습니다. tab 인덴팅 팬들은 그 속도와 효율성 때문에 tab을 지지합니다. 하지만 어떤 문서 프로그램에선 tab을 제대로 읽지 못 해 코드 파일을 깨트리기도 합니다. 그 때문에 어떤 문서 편집기에서도 무너지지 않는 space를 지지하는 팬들이 생겼죠. space 파의 성공 사례로는 인스타그램이 있습니다. 저는 개인적으로 tab을 사용합니다만 여러분 마음에 드는데로 고르세요! (팀이나 회사에서 코딩할 때는 그 단체의 규칙을 따라야합니다)!




코드를 읽을 때 위처럼 설명이 되어있다면 얼마나 읽기 편할까요? 카렐 코드를 모르는 사람도 위의 코드를 읽으면 어느 코드가 무슨 기능을 수행하는지 쉽게 이해할 수 있습니다. 이렇게 코드에 설명을 적을 수 있게 해주는 기능이 바로 "코멘팅 (주석)"입니다. 코멘팅은 두가지 방식이 있습니다. 첫번째 방법은 저렇게 코드와 같은 줄에 설명을 적을 수 있게 해주는 인라인 코멘팅입니다. 어느 줄에서든 슬래쉬 두개 "//"를 적으면 그로부터 엔터칠때까지 모든 글을 코멘트로 간주합니다. (코멘트는 코드를 프로그램으로 컴파일할 때 컴퓨터가 읽지 않습니다. 즉 사람만 읽을 수 있는 부분이죠). 



두번째 방법은 블락 코멘팅으로, 문단 수준으로 긴 코멘트를 작성할 때 사용합니다. 여러줄의 코드를 작성할 때 쓰며, /*로 코멘트의 시작을 알리고, */로 끝을 알립니다. 이 두가지만 있다면 가운데는 중요하지 않지만, 가독성을 위해 가운데 줄들은 *를 사용해 인덴팅하는 문화가 있습니다.


스타일을 위한 두가지 테크닉 "인덴팅"과 "코멘팅"을 사용해 여러분의 기둥 수리 코드를 깔끔히 다듬어보세요! 다음 과제에서는 코드를 작성하는 단계에서부터 인덴팅과 코멘팅을 사용할거니 연습해두시는게 좋아요! ^^


Stanford CS106A 수업에 대한 모든 권리는 스탠포드 대학교가 가지고 있습니다. "스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음"은 스탠포드 대학교의 CS106A 수업을 남녀노소 누구나 쉽게 배울 수 있도록 각색하고 한국어로 번역한 내용이며, 본글에 대한 모든 권리도 스탠포드 대학교가 가지고 있습니다. CS106A 수업에 사용되는 교재인 Karel the Robot Learns Java와 The Art & Science of Java를 작성해주신 Eric Roberts 교수님과 CS106A 수업을 가르치고 계시며 해외로 수업 내용 반출을 허락해주신 Mehran Sahami 교수님 그리고 Marty Stepp 교수님께 감사드립니다.


스탠포드 대학교에서 컴퓨터 과학을 전공중인 박준원이라고 합니다. 질문은 junwonpk@stanford.edu로 보내주시면 24시간 내로 답변 드리겠습니다. 설명을 따라했는데도 똑같이 작동하지 않거나 설명에 이해하기 어려운 부분이 있으면 주저하지 말고 질문 보내주세요! ^^

0 Comments
댓글쓰기 폼