質問: 自由形式の質問である | 具体的な問題がある質問である 回答ではどんな改善を指摘しても良い | 回答では質問に答えなければいけない コードは既に意図通り動いている | (似た制約は無い) 使われているままのコードが好まれる | 小さい例が好まれる 質問中のコードを編集で改変してはいけない | 可読性を良くする編集はOK ``` ただし英語版においては「コードレビューだからクローズ」としているわけではなく、あくまでオフトピックかどうかの観点に照らし合わせて判断しているようです (参考: "Are code review questions off-topic?")
回答: 「○○というソースコードを書きました。このコードをもっと良く書けますか?」という質問は、残念ながらオフトピックのケースが極めて多いようです。 なぜならその質問はヘルプセンターの下記要件を満たしていないからです。 1. 内容が具体的で詳細であること 2. 質問内容をわかりやすく説明すること 3. 誰か一人でも世の中の他のプログラマーに役に立つような内容であること ただしコードレビュー的な質問であっても、質問者、回答者、閲覧者の誰にとっても建設的で役に立つ内容であり、冒頭の要件を満たすと判断できるならば積極的に投稿するべきです。 むしろ質問を投稿する前に、コードレビューで**本当に知りたかったこと**(例えば『再起処理が遅いから高速化したい』『多重ループ減らして可読性上げたい』など)を理解して、それを切り出した質問にするのが理想的な姿勢であると提言します。 以下、上記の結論に至った理由です。 主観的な長文なのでご注意ください。 私自身は上記3点の要件において、項番3の**他のプログラマーに役に立つような内容であること**が上記の中で最重要であると考えています。 例え項番1と2が及第点でなくとも、多くのプログラマーの役に立つ回答やコメントを引き出せたなら、そのトピックは技術者の観点に立てば高い価値があるでしょう。 しかし「この(変数名もスコープも適当かつ密結合どころかメインメソッドしかない)コードをもっと良く書けますか?」というトピックに対して、**他のプログラマーに役に立つ**回答をするのは多大な労力がかかります。 回答者が苦心の末にデザインパターンとデータバインディングを用いた疎結合なMVVMのコードに書きなおして、さらにコードブロックごとに解説を付ければ他の(中級)プログラマーに役立つトピックとなるとは思います。 しかしエレファントなコードしか書けない初学者がそのエレガントな回答を読んでも、拒否反応を起こす確率は高いことでしょう。 そもそも質問と回答のコードは別物になっているでしょうし、質問者はクラスやメソッドが分離している時点で読むことすら放棄するかもしれません。 さすがに上記の例は極端ですね。 ではコメントで「コードに何か疑問や不安な点があるのか」「どこを重点的に直したいのか」と質問して、項番1と2の明示を促すよう要求したとしましょう。 そのコメントを受けて、質問を改善したり明確なコメントを返せる質問者はかなり少ないように見受けられます。(個人の感想です) 質問者が明確なコメントを返せない理由は想像しかできません。 「別の質問の回答を元に自分でコード書いて動くけど、どうして動くのか理解してないし、なんか不安」 「このまま先輩にコード提出しても、コーディング規約に反してるとか、ここのループが~とか文句言われそう」 などの本音をグッと我慢したのか、 「専門用語難しいし、返信も面倒になったからこのままでいいや」 「目的とかゴール書かないと回答できないなんて上から目線でセッキョーすんなよ」 と不満を抱いてトピックから離れたのは分かりません。 しかし既に動作しているコードのレビューが主体の質問は、円満解決に至るまで質問者と回答者の**対話を続ける事例が稀**な印象を受けています。 むしろコードレビューの依頼は、忙しい同僚に話しかけているつもりになって、主観的ではない質問と相反する行為ではありませんか? 以上のことからコードレビュー依頼を投稿する前に内容を吟味して、**本当に解決したい疑問**は何なのかを理解してからその疑問にフォーカスした質問へ書き換えていただくことが、良い質問につながると思います。 さてこの回答は2月中に記述しましたが、投稿をためらっていました。 実は自分の中で一度ボツにしてお蔵入りした内容ですが、興味深いトピックなので一意見を投稿させていただきました。 投稿をためらった理由として、この回答を読んだ**良識的な質問者が良い質問を自粛**することと、勇気を出して質問した初学者が「もっと建設的で役に立つ質問にしなさい」と**心ないコメント**で傷つくことを恐れています。 QAサイトが窮屈で質問も回答もしにくい雰囲気になるのは私が最も忌避したいと強調しておきます。 困っていて質問したい方は、**忙しい同僚に客観的で分かりやすく質問するつもり**で投稿すればそうそう批判を受ける事態になりませんので、ぜひどうぞ。