게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

동료 평가에 관련된 문의사항입니다.

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2013)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
정도원



가입: 2009년 9월 16일
올린 글: 5

올리기올려짐: 2013년9월13일 23:54    주제: 동료 평가에 관련된 문의사항입니다. 인용과 함께 답변

채점 기준의 항목 중에서 <읽기 쉬움> Part 에 대해 궁금한 점이 있습니다.

2점 항목의 설명을 보면

"새롭게 정의된 함수들이 어떤 일을 하는지 설명이 있어 프로그램을 이해하는 데에 무리가 없는 경우" 라고 설명이 나와있는데요.

설명이 있다는 말이 주석을 꼼꼼하게 달았다는 것을 의미하는건가요..??

제가 짠 코드는 아무래도 제것이기 때문에 제가 읽는 데에는 무리가 없는데..
어떤 식으로 설명을 해야 동료 평가에서 좋은 점수를 받을 수 있는지 궁금합니다.


질문 한줄 요약. Code 내부의 상세한 주석 유/무 여부가 <읽기 쉬움> Part 점수를 결정짓나요..??
위로
사용자 정보 보기 비밀 메시지 보내기
강지훈



가입: 2008년 9월 2일
올린 글: 291
위치: 302동 312-2호

올리기올려짐: 2013년9월14일 0:21    주제: 인용과 함께 답변

일단 기본적으로 읽기 쉬운 코드가 무엇인지에 관해 사람마다 다른 견해가 있을 수 있습니다. 하지만 어떤 공통의 (혹은 실용적인) 기준이 있다고 생각합니다. 저는 읽기 쉬운 코드라는건 코드의 목적과 코드가 작동하는 원리가 명확히 드러나는 코드를 말한다고 생각합니다.

1) 코드의 목적:
예를 들어
코드:

(define (aa a b)
  ...a long code that results in gcd of a and b...)

이런 코드는 코드의 목적이 무엇인지 분명치 않습니다. "aa"라는 함수명은 아무 것도 알려주지 않으니까요. 이런 경우
코드:

; gcd: greatest common divisor of two nonnegative numbers
(define (gcd lhs rhs)
  ...)

라고 작성했으면 훨씬 읽기 쉬울 것입니다. 함수 이름으로 코드의 목적을 잘 드러낼 수 없는 경우나, 인자 (lhs rhs) 가 무엇을 의미하는지 직관적이지 않은 경우, 주석은 코드를 읽는데 매우 큰 도움이 됩니다.

2) 코드가 작동하는 원리:
왜 코드가 명시된 목적대로 작동하는지 그 이유가 드러나는 코드가 읽기 좋은 코드입니다. 예를 들어
코드:

; gcd: greatest common divisor
; 두 수 lhs, rhs의 gcd는 (lhs-rhs), rhs의 gcd와 같다.
; 참고: Euclidean division
(define (gcd x y)
   (gcd (- x y) y))

는 작동 원리를 잘 드러내는 읽기 좋은 코드입니다. (참고: 위 코드는 gcd를 구하는 올바른 코드가 아닙니다!)

그렇다고 해서
코드:

(define (plus a b) (+ a b)) ; +는 더하기이므로, plus는 두 수의 합을 나타내는 함수이다

라는 수준의 주석을 다는 것은 좋지 않습니다. 주석에 해당하는 내용은 이미 코드에 (+ a b) 잘 드러나 있기 때문입니다. 왜 코드가 작동하는지에 대한 이해 없이 기계적으로 다는 주석은 무의미합니다.

답변이 도움이 되었길 바랍니다. 감사합니다.
_________________
강지훈
프로그래밍의 원리 조교

Jeehoon Kang
TA, Principles of Programming
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2013) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay