Rust: λ¬Έμ„œ 주석 μŠ€νƒ€μΌ κ°€μ΄λ“œ 개발

에 λ§Œλ“  2013λ…„ 01μ›” 05일  Β·  17μ½”λ©˜νŠΈ  Β·  좜처: rust-lang/rust

1.0 릴리슀 이전에 λ§Žμ€ 라이브러리 μ½”λ“œκ°€ 변경될 κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜λ―€λ‘œ μ§€κΈˆ λ³€κ²½ν•˜λŠ” 것은 μ˜λ―Έκ°€ μ—†μ§€λ§Œ 핡심 및 ν‘œμ€€ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” API λ¬Έμ„œμ— μΌκ΄€λœ μŠ€νƒ€μΌμ„ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. Wiki λŠ” κ·œμΉ™μ„ μ§€μ •ν•˜λ €κ³  μ‹œλ„ν•˜μ§€λ§Œ 이λ₯Ό κ΅¬μ²΄ν™”ν•˜κ³  μ‹€μ œλ‘œ μ½”λ“œλ² μ΄μŠ€μ— μ μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

ν˜„μž¬ 일뢀 λ¬Έμ„œ 주석은 3인칭 μ§μ„€λ²•μœΌλ‘œ μž‘μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

pub fn map<T, U>(opt: &Option<T>, f: fn(x: &T) -> U) -> Option<U> {
    //! Maps a `some` value by reference from one type to another

μΌλΆ€λŠ” λͺ…λ Ήν˜•μœΌλ‘œ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

pub fn chain<T, U>(opt: Option<T>,
                   f: fn(t: T) -> Option<U>) -> Option<U> {
    /*!
     * Update an optional value by optionally running its content through a
     * function that returns an option.
     */

이 두 μ˜ˆλŠ” 또 λ‹€λ₯Έ 뢈일치λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€. 일뢀 μš”μ•½(μ£Όμ„μ˜ 첫 번째 쀄)μ—λŠ” λ§ˆμΉ¨ν‘œκ°€ μ—†λŠ” 반면 λ‹€λ₯Έ μš”μ•½μ€ λ§ˆμΉ¨ν‘œλ‘œ λλ‚©λ‹ˆλ‹€.

ν•œ 가지 더 달라진 점은 주석 μŠ€νƒ€μΌ μžμ²΄μž…λ‹ˆλ‹€. 일뢀 λ¬Έμ„œ 주석은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

/*!
 * foo...
 * bar...
 * baz...
 */

λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ 처럼 λ³΄μ΄λŠ” λ™μ•ˆ

/*!
 foo...
 bar...
 baz...
 */

μ΄λŸ¬ν•œ κ·œμΉ™(및 기타)이 μ„±λ¬Έν™”λ˜λ©΄ 기꺼이 λ¬Έμ„œ 주석을 μ‚΄νŽ΄λ³΄κ³  μ—…λ°μ΄νŠΈν•˜κ² μŠ΅λ‹ˆλ‹€.

P-low

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ„€λͺ… μŠ€νƒ€μΌ:

λͺ…λ Ή μŠ€νƒ€μΌ:

λͺ¨λ“  17 λŒ“κΈ€

:+1: 이에 λŒ€ν•΄ λ…Όμ˜ν•©λ‹ˆλ‹€. λ¬Έμ„œλ₯Ό μ œκ³΅ν•˜κ³  μ‹Άμ§€λ§Œ μ™„λ£Œλœ ν›„μ—λŠ” 더 λ§Žμ€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  싢지 μ•ŠμŠ΅λ‹ˆλ‹€. ;)

비ꡐλ₯Ό μœ„ν•΄ ν‘œμ€€ Python μŠ€νƒ€μΌμ€ λͺ…λ Ήν˜• "Return ..."을 μ‚¬μš©ν•˜λŠ” 것인데 잘 μž‘λ™ν•©λ‹ˆλ‹€.

http://www.python.org/dev/peps/pep-0257/#one -line-docstrings

GoλŠ” λΉ„λͺ…λ Ή μŠ€νƒ€μΌλ‘œ μ •μ°©ν–ˆμŠ΅λ‹ˆλ‹€: http://golang.org/pkg/

λΆ„λ₯˜λ₯Ό μœ„ν•΄ λ°©λ¬Έν•©λ‹ˆλ‹€.

개인적으둜 λͺ…λ Ήν˜• 동사와 λ§ˆμΉ¨ν‘œλ₯Ό μ„ ν˜Έν•©λ‹ˆλ‹€. λ¬Έμ„œ 주석 μŠ€νƒ€μΌμ— κ΄€ν•΄μ„œλŠ”, 적어도 μ–Έμ–΄κ°€ μ—¬λŸ¬ 가지 방법을 μ •μ˜ν•˜λŠ” λ™μ•ˆμ€ μš°λ¦¬κ°€ λ‹€λ₯Έ 방법에 λŒ€ν•΄ νŠΉμ • 방법을 μ μš©ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ λ‚΄κ°€ μ„ ν˜Έν•˜λŠ” 방법은

/**
 * doc string
 */

저도 λͺ…λ Ήν˜•μ„ μ„ ν˜Έν•©λ‹ˆλ‹€. Style은 λ˜ν•œ μœ ν˜•κ³Ό 인수λ₯Ό μ°Έμ‘°ν•˜κΈ° μœ„ν•œ 톡합 ꡬ문을 포함해야 ν•˜λ―€λ‘œ rustdoc μ μ ˆν•˜κ²Œ 주석을 λ‹¬κ±°λ‚˜ ν•˜μ΄νΌλ§ν¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그것은 κΈΈ μ•„λž˜μ— μžˆμ§€λ§Œ

λΆ„λ₯˜λ₯Ό μœ„ν•΄ λ°©λ¬Έν•©λ‹ˆλ‹€. λ‚˜λŠ” 이것에 λŒ€ν•΄ 거의 의견이 μ—†μŠ΅λ‹ˆλ‹€.

μ„€λͺ… μŠ€νƒ€μΌ:

λͺ…λ Ή μŠ€νƒ€μΌ:

λ‚΄κ°€ λ‹€μŒκ³Ό 같이 말할 λ•ŒκΉŒμ§€ λ©”μ„œλ“œ μ •μ˜λŠ” 아무 것도 ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ‚˜λŠ” μ„€λͺ…적인 버전을 μ„ ν˜Έν•©λ‹ˆλ‹€.

class Machine
{
    // Self-destructs the machine, if necessary.
    void self_destruct();
};

// Self-destruct!
if ( emergency )
  machine.self_destruct();

λ‚˜λŠ” kud1ing의 μ£Όμž₯에 ν•©λ¦¬μ μž…λ‹ˆλ‹€. λ˜ν•œ λ¬Έμ„œμ— λ‚˜μ™€ μžˆλŠ” λ°©μ‹μœΌλ‘œ ν•œ 쀄을 μ†Œλ¦¬ λ‚΄μ–΄ μ½λŠ” 경우:

0 λ”ν•˜κΈ° ID 0을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

그런 λ‹€μŒ 선언적 ν˜•μ‹μ€ μ‹€μ œ λ¬Έμž₯ "zero" returns the additive identity, 0. λ§Œλ“­λ‹ˆλ‹€.

@Armavica : μ‹€μ œλ‘œ The method "zero" returns the additive identity, 0 의 μΆ•μ•½ν˜•μž…λ‹ˆλ‹€.

λ¬Έμ„œν™” 및 μΈν„°νŽ˜μ΄μŠ€λŠ” μ²­μ€‘μ—κ²Œ 무언가λ₯Ό μ œμ‹œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ΅¬ν˜„μ—μ„œ 무슨 일이/μ–΄λ–»κ²Œ/μ™œ μΌμ–΄λ‚˜λŠ”μ§€ μ„€λͺ…ν•  λ•Œ λͺ…λ Ήν˜•μ΄ 더 합리적이라고 μƒκ°ν•©λ‹ˆλ‹€.

λ¬Έμ„œμ˜ 예제 μŠ€νƒ€μΌμ— λŒ€ν•œ https://github.com/mozilla/rust/issues/9403 도 μžˆμŠ΅λ‹ˆλ‹€.

쟁기.

μ—¬κΈ° μ£Όμ„μ—μ„œ μ„€λͺ…ν•˜λŠ” μŠ€νƒ€μΌ(예: "λ°”μ΄νŠΈλ₯Ό λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€.")이 λͺ…λ Ήν˜• μŠ€νƒ€μΌ("λ°”μ΄νŠΈλ₯Ό λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€.")보닀 더 많이 μ‚¬μš©λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μš°λ¦¬κ°€ μ–΄λ–€ 길을 κ°€λŠ”μ§€λŠ” 크게 신경쓰지 μ•Šμ§€λ§Œ, 이에 λŒ€ν•΄ 곡식적인 결정을 λ‚΄λ¦¬λŠ” 것이 쒋을 κ²ƒμž…λ‹ˆλ‹€.

이것을 λͺ…λ Ήν˜•μ΄λΌκ³  λΆ€λ₯΄λŠ” 것은 잘λͺ»λœ 것이라고 μƒκ°ν•©λ‹ˆλ‹€. μ•„λ¬΄μ—κ²Œλ„ μ§€μ‹œν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ°˜λ“œμ‹œ ν•„μš”ν•œ 것은 μ•„λ‹™λ‹ˆλ‹€. λ‚˜λŠ” 그것이 1인칭 ν˜„μž¬ μ•”μ‹œλΌκ³  μƒκ°ν•œλ‹€. 글을 μ“°κ³  싢은 좩동이

/// Frob the twaddle.
fn frob() {}

"λ‚˜λŠ” κΈ°λŠ₯이닀. λ‚˜λŠ” 무엇을 ν• κΉŒ?"λΌλŠ” λ§ˆμŒκ°€μ§μ—μ„œ λΉ„λ‘―λœ κ²ƒμ΄λ―€λ‘œ 1인칭 ν˜„μž¬ μ§μ„€λ²•μž…λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ λ¬Έμ„œλ₯Ό 읽을 λ•Œ λŒ€λΆ€λΆ„μ˜ λ…μžλŠ” μžμ—°μŠ€λŸ½κ²Œ ν•¨μˆ˜λ₯Ό 1인칭 μ£Όμ œκ°€ μ•„λ‹Œ 3인칭 λ‹¨μˆ˜ 주제둜 μ·¨κΈ‰ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ λ¬Έμ„œλŠ” 1인칭이 μ•„λ‹Œ 3인칭 λ‹¨μˆ˜λ‘œ μž‘μ„±λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.


이것을 1인칭 ν˜„μž¬ ν‘œμ‹œκ°€ μ•„λ‹Œ λͺ…λ Ήν˜•μœΌλ‘œ κ°„μ£Όν•˜κΈ° μœ„ν•΄ λ‚΄κ°€ λ³Ό 수 μžˆλŠ” μœ μΌν•œ 합리적인 μ£Όμž₯은 λ…μŠ€νŠΈλ§μ΄ μ‚¬μš©μžκ°€ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” ν•¨μˆ˜ 선언을 μ„€λͺ…ν•  λ•Œμž…λ‹ˆλ‹€. 이것은 객체지ν–₯ μ–Έμ–΄μ—μ„œ 맀우 μΌλ°˜μ μ΄μ§€λ§Œ, λŸ¬μŠ€νŠΈμ—μ„œλŠ” νŠΉμ„± λ©”μ†Œλ“œμ—λ§Œ μ μš©λ©λ‹ˆλ‹€. 이 κ²½μš°λŠ” λ©”μ„œλ“œλ₯Ό μ˜¬λ°”λ₯΄κ²Œ κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” μž‘μ—…μ„ μ•Œλ € μ£ΌκΈ° λ•Œλ¬Έμ— λͺ…λ Ήν˜• μ‚¬μš©μ„ μ œμ•ˆν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ λ‚˜λŠ” 이 μ£Όμž₯이 섀득λ ₯이 μžˆλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠλŠ”λ‹€. λ¬Έμ„œν™”μ˜ μ£Όμš” μ‚¬μš© μ‚¬λ‘€λŠ” λ…μžμ—κ²Œ APIλ₯Ό κ΅¬ν˜„ν•˜λŠ” 방법이 μ•„λ‹ˆλΌ APIλ₯Ό _μ‚¬μš©_ν•˜λŠ” 방법을 μ•Œλ €μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€. API의 μ‚¬μš© νšŸμˆ˜λŠ” κ΅¬ν˜„ 횟수λ₯Ό 훨씬 λŠ₯κ°€ν•©λ‹ˆλ‹€(κ°€μž₯ λ‚œν•΄ν•œ 경우λ₯Ό μ œμ™Έν•˜κ³ λŠ” λͺ¨λ‘). λ”°λΌμ„œ λ‚˜λŠ” νŠΉμ„± 방법에 λŒ€ν•΄μ„œλ„ λͺ…λ Ήν˜•μ„ μ‚¬μš©ν•˜λŠ” 것보닀 3인칭 λ‹¨μˆ˜μ˜ ν˜„μž¬ 직섀법을 μ‚¬μš©ν•˜λŠ” 것이 더 합리적이라고 μƒκ°ν•©λ‹ˆλ‹€.

μ²˜λ¦¬ν•΄μ•Ό ν•  또 λ‹€λ₯Έ 사항: ν•˜μ΄ν”ˆ λ˜λŠ” μ—” λŒ€μ‹œ:

https://en.wikipedia.org/wiki/Dash#Relationships_and_connections

μ΄λŸ¬ν•œ μ’Œν‘œ/관계/μ—°κ²° μœ ν˜•μ˜ μš©μ–΄μ—μ„œ ν•˜μ΄ν”ˆ λŒ€μ‹  μ—” λŒ€μ‹œλ₯Ό μ„ ν˜Έν•˜λŠ” 것은 κ³ μœ ν•œ μ² μžλ²• "μ •ν™•μ„±"이 μ•„λ‹ˆλΌ μŠ€νƒ€μΌ μ„ ν˜Έλ„μ˜ λ¬Έμ œμž…λ‹ˆλ‹€. λ‘˜ λ‹€ λ˜‘κ°™μ΄ "μ˜¬λ°”λ₯Έ" 것이고, 각각은 일뢀 μŠ€νƒ€μΌ κ°€μ΄λ“œμ—μ„œ μ„ ν˜Έλ˜λŠ” μŠ€νƒ€μΌμž…λ‹ˆλ‹€.

RFCλ₯Ό μ œμΆœν–ˆμŠ΅λ‹ˆλ‹€: https://github.com/rust-lang/rfcs/pull/505

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰