「クソコード」という表現は好ましくありません

「クソコード」という表現は推奨できません。 なぜなら、コードにクソという言葉をかけることでクソ×クソとなり符号が反転した結果クリーンコードに変化する……ということは期待できないからです。

f:id:slowlylearner:20190816093626j:plain
「みんなではじめるデザイン批評 目的達成のためのコラボレーション&コミュニケーション改善ガイド」第1章より

「みんなではじめるデザイン批評(原著: Discussing Design: Improving Communication and Collaboration through Critique)」という書籍ではデザイン批評でのフィードバックを3つのタイプに分類しています。

  1. 反応型フィードバック: 瞬間的かつ反射的、熱がこもっていて個人的な期待や願望、価値観に突き動かされている。直感的な反応。デザインとは関係ない社交辞令もこのタイプ。

    「おいおい、ひどいもんだな!酒に酔った犬だって、もうちょっとマシなものを作るよ」「見事ですね!すばらしい出来です!」「あなたの作ったXXXをとても気に入りました」

  2. 指示型フィードバック: 助言または提案で始まるが、理由が明示されないことも多い。自身の期待にもっと沿ったデザインにしたいと思っている。

    「もし私がするとしたら……」「私なら……」「……だといいのに」 「ラジオボタンは全部ドロップダウンにするべき。なぜなら……」

3.批評(クリティカル・シンキング): 次の3つの要素を含んでいる。

  • 分析の対象を明確にする。分析しているのがデザインに含まれるアイディアのどのような側面または判断かを具体的に明らかにする。
  • その側面・判断を目的・ベストプラクティスに関連づける。
  • その側面・判断が目的・ベストプラクティスにいかに適っているか、いないかについて理由を説明する。

    「ユーザーが購入前に自分の銀行残高への影響を真面目に考えることが目的だとしたら、残高を一番下に、他のすべての文字と同じ大きさで表示するのは効果的ではありません。それでは他の情報に紛れてしまうからです」

3番目の批評型が著者の推しで、コードレビューでも好ましいスタイルだと思っています。 2番目の指示型フィードバックについては、理由・根拠の説明がなければもちろん反応型と同じく意味がありません。著者はたとえ理由が説明されていてもよろしくない、と断じていますが、それは批評=分析的思考と問題解決=創造的思考を分けないとミーティングが取っ散らかって収拾がつかなくなると考えているからです。これについては今回の話からは離れてしまうの深追いしませんが、コードレビューなら理由を説明してくれれば問題ないと思います。 1番目の反応型が良くないのは明らかだと思います。コードレビューの場合、レビュアーは潜在的なユーザー・メンテナーであるのでちょっと微妙ですが、具体性がないためフィードバックを活用できないデメリットが大きいです。

本題に戻ります。「クソコード」という表現を使うことは反応型フィードバックの一種であり、「瞬間的かつ反射的、熱がこもっていて個人的な期待や願望、価値観に突き動かされている」ものです。もちろんそのような反応を持つことはとても自然なことなのでその感情を抱くことのものについて非難することはできません。しかし、そのフィードバックを返すことによって対象者が問題を分析をすることや解決をすることの助けになるわけではありません。よって「クソコード」という表現は好ましくないと考えます。

これとは別に「相手に敬意があればそのような表現を投げることはないよね」とか「人格批判ではない感情的になるなと言いつつナマの敵対的感情をぶつけておいて理性的ぶるのは一貫性に欠けているのでは」とも思うのですが、今回はスコープ外です。