웹사이트 검색

Ruby에서 주석을 사용하는 방법


소개

주석은 컴파일러와 인터프리터가 무시하는 컴퓨터 프로그램의 줄입니다. 주석을 사용하여 프로그램의 각 부분이 수행하는 작업에 대한 자세한 내용이나 설명을 제공함으로써 다른 프로그래머가 프로그램을 더 쉽게 이해할 수 있습니다. 또한 주석을 사용하여 특정 솔루션을 선택한 이유를 설명하거나 수정 작업을 수행하는 동안 프로그램의 문제가 있거나 불완전한 부분이 일시적으로 실행되는 것을 방지할 수도 있습니다.

컨텍스트를 설명하는 주석과 같은 일부 주석은 코드에 영원히 남을 수 있는 반면, 다른 주석은 프로그램을 작성하는 동안 남기는 메모와 같은 일시적일 수 있습니다.

Ruby 프로그램에서 주석을 사용하여 메모를 남기는 방법과 이를 디버깅 도구로 사용하는 방법을 살펴보겠습니다.

주석 구문 및 사용법

Ruby의 주석은 해시 표시(#)로 시작하여 다음과 같이 줄 끝까지 계속됩니다.

# This is a comment in Ruby

필수는 아니지만 댓글의 가독성을 높이려면 해시 표시 뒤에 공백을 두어야 합니다.

프로그램을 실행하면 코드에 주석이 표시되지 않습니다. Ruby 인터프리터는 이를 완전히 무시합니다. 주석은 컴퓨터가 실행하는 것이 아니라 사람이 읽는 소스 코드에 있습니다.

How to Write Your First Ruby Program 튜토리얼에 있는 것과 같은 간단한 Ruby 프로그램에서 주석을 사용하여 코드의 각 부분에서 발생하는 일에 대한 추가 세부 정보를 제공할 수 있습니다.

# Display a prompt to the user
puts "Please enter your name."

# Save the input they type and remove the last character (the enter keypress)
name = gets.chop

# Print the output to the screen
puts "Hi, #{name}! I'm Ruby!"

이러한 주석은 프로그램의 각 섹션이 수행하는 작업과 작동 방식에 대한 일반적인 아이디어를 제공합니다.

배열을 반복하고 그 내용을 HTML 목록으로 표시하는 프로그램에서 코드가 수행하는 작업에 대해 좀 더 설명하는 다음과 같은 주석을 볼 수 있습니다.

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

# transform each entry in the array to an HTML entity, with leading spaces and a newline.
listitems = sharks.map{ |shark| " <li>#{shark}</li>\n"}

# Print the opening <ul>, then print the array of list items
print "<ul>\n#{listitems.join}</ul>"

아직 mapjoin과 같은 것에 익숙하지 않을 수 있지만 주석은 이 프로그램이 어떻게 작동하고 출력이 어떻게 표시되는지에 대한 아이디어를 제공합니다. 사용해 보세요. 이 코드를 sharks.rb라는 파일에 넣고 실행합니다.

  1. ruby sharks.rb

프로그램의 출력이 표시됩니다.

Output
<ul> <li>hammerhead</li> <li>great white</li> <li>dogfish</li> <li>frilled</li> <li>bullhead</li> <li>requiem</li> </ul>

통역사가 주석을 무시했기 때문에 주석이 표시되지 않습니다. 그러나 결과는 예상했던 것과 일치했을 것입니다. 댓글은 특히 댓글을 읽는 사람이 해당 언어를 처음 사용하는 경우 훌륭한 커뮤니케이션 도구입니다.

주석은 주석을 달고 있는 코드와 동일한 들여쓰기로 작성해야 합니다. 즉, 들여쓰기가 없는 클래스 정의에는 들여쓰기가 없는 주석이 있고, 뒤따르는 각 들여쓰기 수준에는 주석을 추가하는 코드와 일치하는 주석이 있습니다.

예를 들어 다음은 Magic 8-Ball 게임의 Ruby 구현입니다. 컴퓨터는 당신이 묻는 질문에 무작위로 대답할 것입니다. 주석은 각 섹션의 코드와 동일한 들여쓰기 수준으로 들여쓰기됩니다.

# The Eightball class represents the Magic 8-Ball.
class Eightball

# Set up the available choices
def initialize
@choices = ["Yes", "No", "All signs point to yes", "Ask again later", "Don't bet on it"]
end

# Select a random choice from the available choices
def shake
@choices.sample
end
end

def play
puts "Ask the Magic 8 Ball your question."

# Since we don't need their answer, we won't capture it.
gets

# Create a new instance of the Magic 8 Ball and use it to get an answer.
eightball = Eightball.new
answer = eightball.shake
puts answer

# Prompt to restart the game and evaluate the answer.
puts "Want to try again? Press 'y' to continue or any other key to quit."
answer = gets.chop

if answer == 'y'
play
else
exit
end
end

# Start the first game.
play

댓글은 원래 프로그래머든 프로젝트를 사용하거나 공동 작업하는 다른 사람이든 관계없이 프로그래머에게 도움이 되어야 합니다. 이는 주석이 코드처럼 유지되어야 함을 의미합니다. 코드와 모순되는 주석은 전혀 주석을 달지 않는 것보다 나쁩니다.

막 시작하는 경우 수행 중인 작업을 이해하는 데 도움이 되는 많은 설명을 작성할 수 있습니다. 그러나 경험이 쌓이면 무엇 또는 어떻게가 아니라 코드 이면의 이유를 설명하기 위해 주석을 사용해야 합니다. 코드가 특별히 까다롭지 않은 한 코드를 보면 일반적으로 코드가 무엇을 하는지 또는 어떻게 하는지 알 수 있습니다.

예를 들어 Ruby를 알고 나면 이런 종류의 설명은 그다지 도움이 되지 않습니다.

# print "Hello Horld" to the screen.
print "Hello World"

이 주석은 코드가 이미 수행하는 작업을 반복하며 프로그램의 출력에는 영향을 미치지 않지만 코드를 읽을 때 추가 노이즈가 발생합니다.

좀 더 자세한 설명을 작성해야 하는 경우가 있습니다. 이것이 블록 주석의 목적입니다.

댓글 차단

블록 주석을 사용하여 더 복잡한 코드 또는 독자가 익숙하지 않을 것으로 예상되는 코드를 설명할 수 있습니다. 이러한 긴 형식의 주석은 뒤따르는 코드의 일부 또는 전체에 적용되며 코드와 동일한 수준으로 들여쓰기됩니다.

블록 주석에서 각 행은 해시 표시로 시작하고 가독성을 위해 공백이 하나 있습니다. 둘 이상의 단락을 사용해야 하는 경우 단일 해시 표시가 포함된 줄로 단락을 구분해야 합니다.

다음은 Sinatra 웹 프레임워크 소스 코드의 블록 주석 예시입니다. 이 특정 코드가 작동하는 방식에 대해 다른 개발자에게 일부 컨텍스트를 제공합니다.

...
# Some Rack handlers (Thin, Rainbows!) implement an extended body object protocol, however,
# some middleware (namely Rack::Lint) will break it by not mirroring the methods in question.
# This middleware will detect an extended body object and will make sure it reaches the
# handler directly. We do this here, so our middleware and middleware set up by the app will
# still be able to run.
class ExtendedRack < Struct.new(:app)
def call(env)
result, callback = app.call(env), env['async.callback']
return result unless callback and async?(*result)
after_response { callback.call result }
setup_close(env, *result)
throw :async
end
...

블록 주석은 코드 조각을 철저히 설명해야 할 때 유용합니다. 그러나 코드에 과도한 주석을 달지 않도록 해야 합니다. 이러한 주석은 중복되어 추가적인 노이즈를 생성할 수 있기 때문입니다. 특정 청중을 위해 작성하지 않는 한 다른 프로그래머가 Ruby 코드를 이해한다고 믿으십시오. 주석은 코드를 복제하는 것이 아니라 컨텍스트를 추가해야 합니다.

Ruby에는 여러 줄 주석에 대한 대체 구문이 있지만 거의 사용되지 않습니다. 예를 들면 다음과 같습니다.

=begin
This is a multi-line comment.
You can use this approach to make your comments
span multiple lines without placing hash marks at the start of each
line.
=end

=begin=end 줄은 줄의 시작 부분에 있어야 합니다. 들여쓰기를 할 수 없습니다. 이것이 사용되는 것을 거의 볼 수 없는 이유입니다.

다음으로 인라인 주석을 살펴보겠습니다.

인라인 댓글

인라인 주석은 명령문의 같은 줄에서 코드 자체 뒤에 나타납니다. 다른 주석과 마찬가지로 해시 마크로 시작하고 가독성을 위해 단일 공백 문자가 뒤따릅니다.

일반적으로 인라인 주석은 다음과 같습니다.

[code] # Inline comment about the code

인라인 주석은 드물게 사용해야 하지만 코드의 까다롭거나 명확하지 않은 부분을 설명하는 데 효과적일 수 있습니다. 또한 미래에 작성할 코드의 한 줄을 기억하지 못할 수도 있다고 생각하거나 코드의 모든 측면에 익숙하지 않을 수 있는 사람과 공동 작업을 하는 경우에도 유용할 수 있습니다.

예를 들어 Ruby 프로그램에서 수학을 많이 사용하지 않는 경우 귀하 또는 귀하의 공동 작업자는 다음이 복소수를 생성한다는 사실을 모를 수 있으므로 이에 대한 인라인 주석을 포함할 수 있습니다.

a=Complex(4,3) # Create the complex number 4+3i

인라인 주석을 사용하여 무언가를 하는 이유를 설명할 수도 있습니다.

pi = 3.14159 # Intentionally limiting the value of pi for this program.

줄을 서서 하는 설명은 필요한 경우와 프로그램을 읽는 사람에게 유용한 지침을 제공할 수 있는 경우에만 사용해야 합니다.

테스트를 위한 코드 주석 처리

코드를 문서화하는 방법으로 주석을 사용하는 것 외에도 해시 표시를 사용하여 현재 작성 중인 프로그램을 테스트하거나 디버깅하는 동안 실행하지 않으려는 코드를 주석 처리할 수 있습니다. 경우에 따라 새 코드 줄을 추가한 후 오류가 발생하면 제거 프로세스를 통해 문제를 해결할 수 있는지 확인하기 위해 몇 가지를 주석 처리해야 할 수 있습니다.

예를 들어 Magic 8-Ball 게임에서 코드가 답을 올바르게 평가하는지 확인하는 데 관심이 있기 때문에 게임이 다시 실행되지 않도록 하고 싶을 수 있습니다. 게임을 다시 시작하는 코드 줄을 주석 처리하면 됩니다.

...

# Prompt to restart the game and evaluate the answer.
puts "Want to try again? Press 'y' to continue or any other key to quit."
answer = gets.chop

if answer == 'y'
# play
else
exit
end
end
...

또한 주석을 사용하면 코드에서 솔루션을 구현하는 방법을 결정하는 동안 대안을 시도할 수 있습니다. 예를 들어 Ruby에서 배열로 작업할 때 몇 가지 다른 접근 방식을 시도해 볼 수 있습니다. 주석을 사용하여 각 접근 방식을 테스트하고 가장 마음에 드는 방식을 결정할 수 있습니다.

sharks = ["Tiger", "Great White", "Hammerhead"]

# for shark in sharks do
# puts shark
# end

sharks.each do |shark|
puts shark
end

코드를 주석 처리하면 다양한 프로그래밍 방법을 시도할 수 있을 뿐만 아니라 체계적으로 주석 처리하고 프로그램의 일부를 실행하여 오류의 원인을 찾는 데 도움이 됩니다.

결론

Ruby 프로그램 내에서 주석을 사용하면 미래의 자신을 포함하여 인간이 프로그램을 더 읽기 쉽게 만들 수 있습니다. 관련성이 있고 유용한 적절한 주석을 포함하면 다른 사람들이 프로그래밍 프로젝트에서 귀하와 더 쉽게 협업할 수 있습니다. 또한 오랜 시간이 지난 후 프로젝트를 다시 방문할 때 나중에 작성한 코드를 이해하는 데 도움이 됩니다.