ken1flanのブログ

自己紹介・最近やってることなどを書くつもりです。

良いコード/悪いコードで学ぶ設計入門 9章のメモ

gihyo.jp

良いコード/悪いコードで学ぶ設計入門読書メモです。

長いので章ごとにしてます。

9 設計の健全性をそこなうさまざまな悪魔たち

9.1 デッドコード

  • リスト9.1 ifの条件に絶対合致しないデッドコードは…バグじゃないの?
  • if(false)とかの話かと思いました…。
  • railsだと…
    • okuribito_rails、あんまり使われてなさそう。
    • simple_covカバレッジの低いところを探すのがよさそうかも。

9.2 YAGNI原則

  • これ重要…。
  • つい、「こんなこともあろうかと…!」とカッコつけたくなりますが、いやいや…。
    • 長い間同じプロジェクトにいれば、カッコつけで書いたコードが使われていないのをたくさん目撃してます…。
    • 気をつけよう…。
  • YAGNI原則は…上位工程にも言えますよね…。

9.3 マジックナンバー

  • リスト9.2、ひどい。変数名も適当すぎて…。メソッド名だけでかろうじて読めるくらい。
  • リスト9.3、主題の改善をめちゃくちゃはみ出してて、例としては適当でないような…。
    • 突然こんな改善提案が来たらどうしていいかわかりません><

9.4 文字列型執着

  • …そんな面倒なことをやる人いるの?
  • フラグを数字の文字列にして、桁数で管理、も同じですかね。
  • DBのテーブルの件数次第ではそういうことが必要なときもあるかもなぁ…。

9.5 グローバル変数

  • 巨大データクラスもグローバル変数と同じような短所を持つ、というのは確かに、と思いました。
    • 確かに知らず知らずのうちに作ってしまいそうです。

9.5.1 影響範囲を最小化するよう設計すること

  • よく考えて設計しろとしか書いてなかった…。

9.6 null問題

  • 物によっては毎回チェックするのでよいような気がしますが…

9.6.1 nullを返さない、渡さない

  • 「装備なし」を装備…!
    • ひとつのテクニックですね。
    • これはこれであんまり直感的でないような気はします。
      • アプリが落ちるような不具合は起きなそうですが…。
      • 「装備なし」であることをチェックするコードを入れ忘れて表示がヘンになったりして、笑われるような不具合はボチボチ起きそう。

9.6.2 null安全

  • 引数や返り値の型でnullの可能性があるかどうかを明確にして、静的解析やコンパイラでみつけてもらう、というのが一番好きかも。
    • Dartのint?みたいなヤツ。

9.7 例外の握り潰し

  • リスト9.14、本当に問題ないならコメントをつけて…!
    • 処理を続けたいなら、エラートラッカーには投げて!

9.7.1 原因分析困難に陥り開発者を疲弊させる

  • そういえば、どうして握り潰したくなるんでしょう🤔

9.7.2 問題検出時にけたたましく叫ばせる

  • せやなぁ…という感じ。

9.8 設計秩序を破壊するメタプログラミング

  • 個々の処理で使おうとしてたら大反対しますね…。
  • いつ、どのオブジェクトに作用するとか、ちゃんと知って使いたいものです。

9.8.1 リフレクションによるクラス構造および値の変更

  • え?こんなことするひといるの…?
  • (できることを知っておくのは大事だと思います!)

9.8.2 型の強みを活かせなくなるハードコード

  • え??こんなことするひといるの…??
  • 全部手で書くのが面倒で、文字列でメソッド呼び出しをしたりすることがありました…。たしかにリファクタリングで抜け落ちそう…。気をつけます><
  • (できることを知っておくのは大事だと思います!)

9.8.3 デメリットを理解し用途を限定すること

  • 同意。

9.9 技術駆動パッケージング

  • 図9.3、こんなパッケージ化する???
  • Railsは結局まっ平らな中にいますからね…。
  • …と思いましたが、他の言語のフレームワークの分け方を真似てみて失敗することはありそうですね…。

9.10 サンプルコードのコピペ

  • 内容をわかって組み込んで、というのはよく言う気がします…。
  • そうしてしまう背景をもう少し解決したい気持ちです。
    • あ…でも、software designのサンプルコードみたいのだと、とりあえず動かしたかったからそのまんま書いちゃったかも。これかな?

9.11 銀の弾丸

  • お、おう、そうですよね!
  • うちのチームは読書会…!