Ruby は次のようなインライン コメントを理解できますか。
my_array = ['first', /* 'second', */ 'third', 'fourth']
?
アップデート:
Ruby の /* */ とは何か、エラーが発生する理由についてではなく、利用可能な形式でのインライン コメントの存在について尋ねました。/* */ は、私が知っているインライン コメントの例としてのみ示しました。
いいえ、Ruby にはインライン コメントがありません。
このスタイルのコメントは、コードを理解するのが難しくなるため、可読性が低下する傾向があります。
あなたの場合、配列項目を別々の行に分割し、1 行をコメントアウトするのが最善です。
my_array = ['first',
# 'second',
'third',
'fourth']
rdoc (Ruby のビルトイン ドキュメント ビルダー) は、コード内のコメントを利用してドキュメントの初期セットを作成できることを付け加えたいと思います。私の最近の読書で理解したところによると、「Ruby のやり方」とは、コードは読みやすく、自明である必要があることを示唆していますが、そのコメントは、プロジェクトを外部に送信する前に、開発の初期段階でドキュメントを作成するための貴重で簡単な方法です。適切なドキュメンテーション チーム。
インライン コメントに関して言えば、私の使用例は、適切にフォーマットされたソース ファイルにコミットする前に、irb で長めのワンライナーに取り組んでいることに気付いた場合です。おそらく多くの人は、開発環境で改行を使用してもかまいませんが、現時点ではツールセットに関する知識が限られているため、以前のコマンドを繰り返すのは面倒です。これは、irb、pry、what-have-you など、手元にあるツールを理解できなかったことが原因であるとほぼ確信しています。現時点では、インラインでコメントしたいコードを文字列オブジェクト内にラップしています。後で削除するか、文字列ラッパーを削除して「コメント解除」する必要があります。
それを取るか、そのままにしておきますが、それは私の 2 セントです! ルビーを続けてください!
補遺:
pry
ドキュメントを読むのはお金がかかります!メソッドは、 を含むすべてのpry
オブジェクトにバインドされますmain
。これを呼び出すと、現在のプロンプトでサブシェルが実行され、現在のスコープ内の任意のオブジェクトを分析できます。main
こじ開けプロンプトを含む、あらゆるコンテキストで使用できます。amend-line
Pry の, edit
, hist
,コマンドと組み合わせることで、play
インライン コメントに対する私の欲求は満たされますが、編集のために現在のプロンプトの入力に前のコマンドをロードする pry の機能についてはまだ知りません。
pry
テキスト エディターを呼び出すと、シェル バッファーの内容が 1 つのディスプレイ (ラップトップなど) で表示されなくなるだけでなく、特に役立つタブ補完とコマンドがすべて削除されるため、かなり気を散らす傾向があります。私はまだワンライナーを使用する必要性を見つけているので、pry、または複数行にわたってカーソルを使用できる別の REPL を見たいと思っています。
反対票を投じる前にすべてを読んでください:)
正直なところ、コメントをまったく使用するべきではありません。コードは自明でなければなりません。
これは話題から外れているように思えるかもしれませんが、Ruby でこの種のコメントを実装しない理由を提案として聞いてください。
クライアントのいAPIを処理しているため、この質問に出くわしました。Rubyコードに処理されるJSONリクエストは次のようになります
api_response = {
headers: ["uniq_id", "email", "description"]
rows: [
[2345, 'foo@bar.car', 'first item'],
[9876, 'car@bar.foo', 'second item']
]
}
したがって、私のスクリプトでは、すべての一意の ID を収集したいと考えています。
JSON.parse(api_response)
.fetch('rows')
.collect { |application_row| application_row.at(0) }
at(0)
何がフェッチされているかをコメントできる機能があればいいのにと思います。澤が彼のコメントで示唆しているように、もし存在するなら、%c{}
私はこのようなことをすることができます:
JSON.parse(api_response)
.fetch('rows')
.collect { |application_row| %c{uniq_id}; application_row.at(0) }
...しかし、私はただ愚かであることに気付きました。自己コードは自分の意図を自己説明する必要があります
uniq_ids = JSON.parse(api_response)
.fetch('rows')
.collect { |application_row| application_row.at(0) }
場合によっては、これはオプションではないため、これでうまくいくかもしれません:
JSON.parse(api_response)
.fetch('rows')
.collect { |application_row| uniq_id = application_row.at(0) }
...はい、これは未使用のローカル変数の使用につながりますが、この場合、パフォーマンスにあまり影響を与えずにコードの可読性が向上するため、これは問題ありません。
Paul の場合、配列から 1 つの要素を削除したいだけです。彼はおそらくデバッグ目的でそれを望んでいると思いますが、一般的な考え方は、Ruby はできるだけクリーンなコードを書くことを強制し、本番環境で使用されないものはすべて削除することです。
これに対する解決策は
my_array = ['first']
# my_array += ['second']
my_array += ['third', 'fourth']
これは醜いですか?そうです、それは一般的な考えです。これは、コミットする前にこれをリファクタリングする必要があり、本番環境に入る前に醜いコードを削除し、不要なものを削除することを強制するというものです。
更新 2019 05
この回答は現在-1です。2014年に投稿されました.2019年です.そして、私はまだ同じ意見を持っています:)コメントを書くと、意図を明確に表示するコードを書くことができません:)
コメントが必要な場合は確かにあります。しかし、開発者の適切な反応は次のとおりです。
私は現在、この分野で 12 年の専門的経験を持っています。そして、これはプロジェクトで何度も見られます: コード全体にコメントがあると、開発者はコメントを貴重な情報と見なすのをやめ、読まなくなります。
しかし、原則として、優れたコード/アーキテクチャ設計で解決できない「ここにコメントを入れましょう」という単一のユースケースはありません:)
マーティン・ファウラーを引用するだけです:
どんな愚か者でも、コンピューターが理解できるコードを書くことができます。優れたプログラマーは、人間が理解できるコードを書きます。