一人称コメントは気を散らし、プロフェッショナルではありませんか?


63

私は自分が書いていた(古風なVisual Basic 6.0)コードで次のコメントを書いていることに気付いた。

If WindowState <> 1 Then
    'The form's not minimized, so we can resize it safely
    '...
End if

コメントで「私たち」を無意識のうちに使用する理由がわかりません。誰かがコードをステップスルーするのを想像しているのではないかと思っています。まるでそれらが実際に発生するのを見るのではなく、実際に各行のすべてのコマンドを「行っている」かのようです。この考え方では、私はI can resize it現在、それを「やっている」ので、またはyou can resize it、「将来」それをやっている人と話しているかのように使用できますが、これらのケースの両方は私は自分のコードを他の人に導くかのように「私たち」を使用します。

私は単純にそれを書き換えてit can be resized問題を回避できますが、それは私の好奇心を引き起こしました:コメントでこのような最初の人を使用することは一般的ですか、それとも気が散るおよび/または専門家でないと考えられますか?


1
投票へのコメントは?これは私の最初のProgrammers.SEの質問であり、私は今でも良いP.SEの質問と良いSOの質問の違いを正確に解明しようとしています。
dlras2

2
私はあなたに賛成票を投じませんでしたが、タイトルの質問は、短い質問、おしゃべり、無担保の意見に簡単に答えられるため、彼らはタイトルの質問を好まなかったと推測できます。最終的な質問のように言い換えることが役立つかもしれません。
DKnight

56
私たちは「私たち」が好きです。その友好的かつ包括的で健全な、フォークのような方法で。
ジェレミー

25
第三者の全知で取り組んでいるすべてのバグ修正についてコメントし始めると思いますが、オフィス全体で私を人気にするはずです...」永久に空の表示フィールドで...」
DKnight

4
私のコメントが間抜けなタイプミスを起こさないようにするためにできることはそれだけです。今、私は受動的な音声を使用すべきかどうか心配する必要がありますか?次に、前置詞をぶら下げないことを確認する必要があります。これは、同僚が我慢できないものだと思います。そして、分割不定詞を使用することは許されないと思います。文の断片?
マイケルバー

回答:


103

コメントは、人間が理解するために書かれるべきです。人間がコミュニケーションをとるとき、通常は「I」、「We」、「you」などを使用します。

誰かがコードを理解しようとするとき、2人以上のアクターがいます。それを読む人と、コードの元の作者です。「私たち」と言っても結構です。「プロ」以外の場合は、「ロボットのような」という意味です。


3
この方法で+1を書くと、作家は潜在的な読者を考えるようになり、より詳しく説明する必要があるかもしれない概念を見るのに本当に役立ちます。
ジャスティンオームズ

64
// we approve of this answer:)
ジャロッドディクソン

3
+1と増幅:逆に、「サイズを変更できる」などの受動的な音声構成は、理解が難しいと一般に書面で拒否されます。受動態を使用する場合、読者は文の主題を発明し、覚えるように強制します。
msw

1
@msw:それは「それは「サイズを変更することができます」などの受動的な音声構造を拒否するべきではない...」
tdammers

2
たとえば、ロシア語の@mswは、受動的な音声構成がより一般的であり、いくつかの文化的な違いにより、より簡単に理解されます。(いいえ、私はわざと受動的な声でその文を書きませんでした!)
P Shved

22

コードのすべての責任を自動的に引き受けるため、「I」の使用を避けることをお勧めします。他の人がそれを読んでいる場合、それはこの場合のチームの努力であることを意図しているため、見た目が悪いでしょう。私たちは「私たち」の使用に無関心です。しかし、それは他の読者を不本意ながら含んでいるように見えるかもしれません。

私の投票は、簡潔さと簡潔さを求めています。メッセージをより冗長な方法で伝えることができる場合、なぜ他のものを選択するのですか?したがって、この例に関しては、次のように書きます。

'The form is not minimized so it can be resized safely.

4
「メッセージをより冗長な方法で伝えることができる場合、なぜ他のものを選択するのですか?」文書化されていないライブラリを実装しようとして壁に頭を突っ込まなければならなかった人として-オープンソースライブラリはこれで悪名高い-私は、少なすぎるよりも多すぎるコメントをしたいと言います。意味のある正しい句読点を使用して良い文章を使用することを意味する場合でも、私はあなたに同意すると思います。
ジョナサンヘンソン

3
チーム設定ですべての責任を負わないための+1。そして、私は冗長なコメントを避けようとすることに同意しますが、時には受動的な時制は(jkjが指摘したように)読みにくくなり、冗長ではないこともあります。=]
dlras2

2
@ジョナサン・ヘンソン:多くのコメントは良いですが、多くの有用な情報が含まれている場合のみです。同じ量の情報を2つの同等な方法で表現できる場合は、短い方が適しています。
-tdammers

私のアドバイスは、受動態を使用しないことです。特に英語を母国語としない人にとって、理解するのはより困難です。
ヴィルラウリカリ

18

私は2つのアプローチのうちの1つを取ります。通常は、より良いと思うものなら何でも。

要件や正当化のようなものを説明する際に、私たちはあなたがそこにいるように「私たち」と行きます:

// We can't proceed unless the user has given us this information.

プロセスを説明している場合は、命令的な(コマンド)音声を使用する傾向があります(それが間違った用語である場合は修正してください)。

// Get the foo from bar and make sure it follows our required format.

後者はコードを繰り返すことに危険なほど近づくことができますが、用途があります。ですから、私も私たちも使用していませんが、実際には「あなた」を意味しています。


これもまさに私のスタイルです。あなたが説明する両方の方法には、それぞれの場所があります。
-zourtney

9
後者には「私たち」も含まれています。人が自然に一人称の複数形でコメントを書くのは面白いと思います。
リード

@Reidうわー、それは本能だった、気づかなかった。しかし、簡単に「the」と言っていたかもしれません。
テセレックス

8

私はそれが学術的/技術的な執筆スタイルの単なるバリエーションであり、多くの場合非人格的だと思います。パッシブボイスを使用し、「ロイヤルウィ」を使用します(「1」は古いのです)。

原則として、とにかく誰がそれを使用するか非特定です-コメントは通常、元の著者だけでなく、メンテナーの利益のためです。

とは言うものの、はコメントで最初の人をよく使用します- 特定の決定を下した理由が考えていたこと説明するため


3
私は個人的に「1」が日付付けられているとは感じません。はい、それはあまり一般的ではありません。なぜなら、それは時々使用するものではないからです。ただし、コメントの意味で「1」を使用すると、読みにくくなるか、ユーザビリティが損なわれる可能性はほとんどありません。
ビリーONeal

7

コメントは、何が行われているのかではなく、なぜ何が行われているのかを示す必要があります。実行されていることがコードから明らかでない場合は、コードを修正し、コメントを追加しないでください。一人称、二人称などは関係ありません。重要なのは必要な情報を伝えることです。

コードをナレーションする必要がある場合は、命令を好む、例えば

'ensure that the window is not minimized
If WindowState <> 1 Then
    'resize the window
    '...
End if

(そして、コードで「1」のような裸の定数を使用しないでください)


3
命令型を好むために+1、私はそれを考えていませんでした。また、はい、裸を使用するべきではありませんでした1。私は通常それについてかなりいいです...それがインターネットで私の心を滑らせた数回のうちの1つを投稿するのを私に任せてください。
dlras2

6

たぶん、私たちは魔法を起こさせるプログラムの中の小さな人たちに言及していますか?:)

英語の受動態は使いにくく、悪い音です。人々は個人フォーム(私、あなた、私たち、1つ)を使用するのが好きです。

例:

(あなた/私たち/一人)デリゲートを使用してウィンドウサイズ変更イベントを親に渡す

ウィンドウサイズ変更イベントを親に渡すためにデリゲートを使用する必要があります

別の例(コメント内の個人フォームをしばしば省略できることに注意してください):

(私たち)例外をキャッチしました。(これから)エラーダイアログを表示します。

例外がキャッチされ、エラーダイアログが表示されます。

PS。パッシブを「あなた」に置き換えることは英語では非常に一般的であるため、他の言語にも漏れ始めています。たとえば、二人称単数形が存在するフィンランド語(英語の "thou"など)では、とてもおかしく聞こえます。


言語的にはこれは正しくないと思います。最初のものは必須であり、主題はありません。"ドアを閉じてください。" それはおおよそ「どうぞ、ドアを閉められますか?」と同じ意味です。これは明確な文法形式であり、略語ではありません。2番目の例では、「(それは)例外をキャッチしました(エラーダイアログを表示します)」と言うこともできます。
インカ

3

プログラムの実行について話している場合、それは「私たち」、「あなた」、「私」ではありません。擬人化は目立たないほど広まっているかもしれませんが、危険な習慣です(PDF警告。ダイクストラ警告。):

擬人化は何よりも悪いと思います。私は今、「物事をしようとしている」、「物事をしたい」、「物事を真実であると信じている」、「物事を知っている」などのプログラムを見てきました。それはプログラマーにプログラムの実行で自分自身を識別するように促し、彼に操作上のセマンティクスの使用をほぼ強制します。


2
ダイクストラ警告!複数のものに1つしかなかった場合:(
トムアンダーソン

一人称の複数形でコメントを書くことは擬人化だとは思いません。コメントを書いているプログラマーが自分のコードを通して読者を導くかのように、「今、私たちはコンピューターに指示します...」を暗示していると思います。
ブルージェイ

2

私は一人称や「ロイヤル・ウィー」のどちらかがプロではない、または気を散らすとは思わない。私は、「to be」動詞を持たない英語のサブセットであるE-Primeで英語のコメントを書く努力をすべきだと思います。

コメントで「to be」を使いすぎると、次のような紛らわしいステートメントが表示されます。

// X is 10
// X is the user data of the newly-authenticated user
// X is a BigInt

まあ、一度にすべてではないかもしれませんが、平等は本当にコメントを不明瞭にする可能性があります。

E-Primeで要件を書くことは、それらの要件を明確にするのに役立つと思います。作家はアクションとともに俳優を示さなければならないからです。


興味深い概念; 「Xは少なくとも5」または「Yは23以下でなければならない」という概念をどのように表現しますか?
supercat 14

@supercat-「Xの値は5以上の大きさでなければなりません」。「Yの値は23を超えてはなりません」。論理的または算術的な平等では、「to be」動詞も使用しないでください。「Xは5を含む必要がある」、「Xは5に評価される」、「Xは5の値を持っている」など。特に不明瞭なコメントを見つけた場合は、「〜になる」動詞を探してください。不明瞭なコメントでは、「to be」という動詞に注目する必要があると思います。また、上記の回答をE-Primeで書いたことにも注意してください。
ブルースエディガー14

2番目は問題ありません。-6は5以上の大きさであるため、最初はそれほど重要ではありません。
supercat 14

@supercat-非常によく。「Xには5以上の符号付き整数値が必要です」。米国では、「大きさ」を「絶対値」と呼びます。これは、等式から生じる変数としての変数ではなく、変数の値を説明するという私のポイントを補強します。
ブルースエディガー14

2

コメントの正しいスタイルは、非人格的な第三者です。「フォームは最小化されていないため、安全にサイズを変更できます。」

  • は素朴です。
  • あなたはひどいです。
  • 私たちはフォーマルすぎる(そしてロイヤル)。

すべての文はこの方法で言い換えることができ(上記参照)、それが唯一の専門的な書き方です。


11
-1理由:正しい方法がないため、あなたのI / You / Weの要約が少し触れられておらず、最後の部分がわかりません。余談:コメントで「私たち」と言うとき、私は王様のように話そうとはしていません。あなたと話しているのです。
-doppelgreener

2

コメントに依存します。

通常、私は「The Mouth of a Cow」によって提案された方法でコメントを書きます。また、私は常にこの方法でドキュメント生成コメント(Doxygen、JavaDoc)を書いています。

ただし、多くの場合、バージョン管理を使用して、ソースファイル内の誰が行を書いた/触れたのかを特定しません。「I」と言うのが適切な場合があります。特に、コードを書いた人に「I」を追跡するのがかなり簡単な場合です。個人として決定を下した場合、「バージョン管理とともに」「I」を使用して、コードに沿って決定を識別および追跡することをお勧めします。


DoxygenおよびJavaDocの場合は+1。ドキュメントはコメントとは別のものであることに同意します(一部のコメントはドキュメントを生成します)。
dlras2

1

私の古き良き父(mhrip)は、「あなたが気にするより重要なことはありませんか?」と尋ねるでしょう。

しかし、個人的には、「私たち」が好きです。また、私が自分の会社で唯一の従業員であることを考えると、コードではなく、上流の文書で私たちを書く理由を疑問に思います。

しかし、私自身と私はこのように孤独を感じないことに同意します:)


1

「私たち」を書いて「私とコンピューター」(または「私のチームとコンピューター」)を考えるのは私だけですか?「私たち」は、外部から与えられたリクエストを処理します。つまり、「私たち」は、「私たち」のビジネス要件に基づいて、リクエストを読み取り、ウィンドウを開き、計算を行う必要があります。これは、コードを敵ではなくあなたの側の一部として見るのにも役立ちます:-)


0

短いコメントについては、次の開発者にコメントを読むように指示するメッセージのように、誰かに指示しているように、二人称で書くこともあります。といった

//You can get a session_id from SYSSession.getSessionID() if you need one

長いコメント(長い関数ヘッダーやアルゴリズムの説明の複数の行など)私は中立を保ち、一人称、二人称、三人称を残さないようにしています。


英語のパッシブはめったに良い音ではありません:「session_idは、必要に応じてSYSSession.getSessionID()から取得できます」
-jkj

0

コードが十分に明確ではなかったため、このコメントを追加しました。一般的に、明確に定義された方法で意図を表現すると、コメントの使用が避けられます。たとえば、その行をという名前のメソッドに移動することもできますCanThisFormBeResized

どんなに小さくても、名前の付いたメソッドはコメントに勝ちます。コメントとコードが簡単に同期しなくなるからです。

したがって、ほとんどのコメントをコードで表現できる場合、コメントの理由はほとんど残りません。

  • あなたのコメントがあなたの意見である場合、「私」で始まります
  • コメントを共有する意見(ベストプラクティスなど)であるとお考えの場合は、「私たち」から始めてください
  • コメントが半信奉者によって書かれた危険なコードに向けられている場合は、コメントを破棄して、同僚からの紛らわしいコードを読み、それらに向かい合って対処します。

1
申し訳ありませんが、私は本当にこのスタイルのファンではありません。特に、このコードは1か所で1回使用されているため、既にresizeメソッドで唯一のものです。特にVB6デバッガーを使用している場合は、リファクタリングによって複雑さを増すために、短くてわかりやすいコメントを好むでしょう。余談ですが、CanThisFormBeResizedおそらくのようThisFormCanBeResizedに使用する場合はそうすべきIf ThisFormCanBeResized Thenです。
dlras2

1
好みです。私はfunction() { return this.windowState != 1 }任意のコメントのようなプライベートブールメソッドを取ります。私からの1
keppla

1
@Dan、他の人が後で来たらどうなるでしょう:なぜウィンドウを最小化できるかどうかを判断するために、周りを検索してロジックを再構成するのですか?彼らはあなたの小さなコード行をコメントで見つけて自分で追加することすらできないかもしれません。これで、ロジックが変更された場合に変更が必要な2つの場所と、コメントがコードと同期しなくなる可能性のある2つの場所ができました。よく名前が付けられた1行のメソッド(状態を変更しない)が複雑さを追加するのはなぜですか?これは最も単純で、最もクリーンなリファクタリングの1つです。
スティーブダン

0

経験則として、最初の人、つまりを使用することをお勧めしますI

どうして?私の所有的な性質のためではなく、人々が他の視点で話すとき、彼らはあまりに多くの単語を使うか、文章を複雑にしすぎて、物事を説明しようとして迷子になる傾向があるからです。最初の人は常に読みやすい傾向があります。


0

個人的に私は(C#で)書くでしょう:

if (WindowState != WindowState.Minimised)
{
     ResizeWindowSafely();
}

またはそれらの線に沿って何か、したがってコメントを必要としません。


ResizeWindowSafelyサイズを変更するかどうかわからない場合に呼び出すことができるため、if (WindowState != WindowState.Minimised)それ自体を含める必要があります。
dlras2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.