skillup

技術ブログ

プログラミング全般

コードの分割

投稿日:

今回はリーダブルコードの8章。コードの分割について。

ポイントとしては1行に情報を詰め込みすぎているような場合は分割して、意味がわかりやすい区切りにまとめよう、といったことでしょうか。つまりは「困難は分割せよ」ということでしょう。

先日のエントリーでも書いたのですが、自分は短く書くことにこだわりすぎて情報を詰め込む癖がありましたね。例としては無理やり三項演算子を書いたりとか。

もちろん短く書くことは大切ですが、それはあくまで「読みやすい」「意図がわかりやすい」「頭に負担をかけない」ことが大前提となります。もし短く書きすぎることによって逆に読みにくくなるのであれば本末転倒ですので、逆に分割して読みやすくする必要があるでしょう。

変数への分割化・要約化

例えば下記のコードは一行にちょっと情報が詰まっています。

そんなとき下記のように変数を使ってコードを分割することもできます。

ただこの感覚は個人差があると思います。上のコードでも問題ない、読みにくくない、チームの人間も大体上のコードで書いているというのであれば問題ないでしょう。

要は読みやすい情報量に分割する、ということだと思います。

&& ||の反転

数学でいうドモルガンの法則の応用 ( a! && b!) → !( a & b )など。これはif文で複雑な条件分岐があったときに少しでもわかりやすい処理に書き換えるときの工夫でしょう。

1行に処理を詰め込みすぎない

冒頭で書いていたことですが、1行の中に処理を詰め込みすぎるとかえってわかりにくくなるので、読みやすい、理解しやすい量に分割しましょう。短く書くこと自体を目的にしないこと。

ロジックが複雑な場合は別解を検討する

条件分岐の中に複雑な式が3,4入るようならば別のロジックを使えないか検討しましょう。複雑になればなるほどバグの可能性も大きくなります。

-プログラミング全般
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

正規表現その2

10/28に書いた正規表現に関しての追記です。 Contents1 覚えておきたいメタ文字2 留意点 覚えておきたいメタ文字 よく出るメタ文字の復習です。 メタ文字 メタ文字の説明 [] いずれかの1 …

no image

コードの抽象化

リーダブルコードも終盤に少しずつ近づいてきました。 今まではどちらかというとコードの点や線の技術に注目してきましたが、これからは面的な要素に注目していきます。 リーダブルコードでは「無関係の下位問題を …

no image

データのシリアライズ

おととしにJavaをやったときにでてきましたがSessionに情報を格納するときにでてきたシリアライズについて。 セッションはステートフルな状態を実現するための便利なデータの保存方法ですが、値をオブジ …

no image

ポート解放(CentOS7)

新サーバー構築をしていたときにwebサーバーとしてnginxを立てましたが、外部から接続ができません。 500エラーすら吐かれず、ログも残っていません。 こんな時はホスト自体にアクセスが届いていない可 …

no image

DIとDIコンテナについて再考

今までも何度かやったDI(Dependency Injection = 依存性の注入)について。 以前のリンク PHPにおけるDI スコープアノテーションとCDIについて Contents1 DIとは …