Rails: DHHのYouTube動画を辛口レビュー「On Writing Software Well #2」(翻訳)

概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: On Writing Software Well #2: Using callbacks to manage auxiliary complexity: A review - Ryan Bigg 原文公開日: 2018/03/26 著者: Ryan Bigg — Ryan Bigg氏はRailsのcontributorであると同時にCulture Amp社のメンバーであり、RubyやElixirでの開発を行っています。RailsガイドのドキュメントやMultitenancy with Rails など多くの執筆実績があります。 お題の動画です↓。 Rails: DHHのYouTube動画を辛口レビュー「On Writing Software Well #2」(翻訳) DHHの最近の動画シリーズについて思うところがあるんじゃないのかと何人かの方に尋ねられました。他にも、この動画に対する批判的な意見がないのが残念という声もありました。そこで、DHHの2本目の動画を題材に、私から辛口の意見を述べたいと思います。 シリーズ1本目の動画にしなかった理由は、この回が実によかったからです。コードがそうなるに至った理由を説き明かすコメント、これはコードベースのそうした部分に慣れ親しんでいない人にとって計り知れないほど有用です。DHHの説明も周到に練り上げられていて、私がツッコめる部分はどこにも見当たりませんでした(ここダジャレ!)。 訳注: commentingが「コメントを追加する」と「論評を加える」の両方の意味にかけているようです。 動画の第2回のキーワードは「コールバック」です。DHHがコールバックについてどんなことを語るのか、いたく興味を惹かれました。 以下の論評には、動画を3回見直したときの走り書きも含まれています。こういう本音ポロン出しを気に入っていただけた方は、ぜひ(原文)末尾のコメントにてお知らせください。 第一印象 コールバック来た。もうたくさん。コールバックって、欲しくもないときに発生すること多いし。単体テストでモデルのcreateを呼ぶときとかに、テストに全然関係ない振る舞いをコールバックが引き起こすし。びっくりさせるのは好きじゃないんで、この場合自分なら明示的に書くかな。 DHHの動画ではRailsのconcern(includeされてクラスに振る舞いを追加するモジュールのこと)の話題を扱うかもよという噂は小耳に挟んでたけど、もしそんな話を始めたら速攻で動画を一時停止してお気に入りの酒を持ってきてから、Railsアプリで使われてるconcernの話をするたびに一杯ずつひっかけるか。 1:35 「副作用」 「副作用、最近は評判が今ひとつだけどね、特に関数型プログラミング方面で」そりゃそうでしょう。メソッドを呼んで「魔法のようなクソがランダムに発生」すれば予測は難しくなるし。コードが何をしているかを明示的に書いておけば、「今」だろうが「将来」だろうが理解に苦しまないで済むし。DHHにはこの「将来」という視点が欠けているし。 2:13 「Messagesコントローラ」 @bucket.recordの引数、いくらなんでも多すぎ。こんだけ引数使って何をしようと?key/valueごとに改行ぐらいしないと @bucket.record(new_message, parent: … Continue reading Rails: DHHのYouTube動画を辛口レビュー「On Writing Software Well #2」(翻訳)