skillup

技術ブログ

プログラミング全般

コードの分割

投稿日:

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

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

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

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

変数への分割化・要約化

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

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

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

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

&& ||の反転

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

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

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

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

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

-プログラミング全般
-

執筆者:


comment

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

関連記事

no image

アプリケーションアーキテクチャについて 〜ドメインモデルに関して〜

前回のトランザクションスクリプトパターンの反省から 今回はいわゆるドメインモデルの具体例に関して。 ドメイン駆動型設計には以下のような特徴があります。 大きく、アプリケーションの構成を以下のように分け …

no image

トランザクショントークンについて

フォーム画面で入力を行うときにはPOSTでデータを受け取ってエラーチェックしたり、データベースに入力をしたりします。 ただその時に何も考えずに安易に送信→受信の際に以下のようなトラブルがあり得ます。 …

no image

OSコマンドインジェクション

Contents1 OSコマンドインジェクションとは?2 被害3 対策4 参考リンク OSコマンドインジェクションとは? OSに対する命令文を不正に紛れ込ませて攻撃させる手法。 被害 サーバー内のファ …

no image

データ構造の基礎知識 前編 メモリとポインタ、配列と連結リスト

WEB+DB(vol91)で使えそうな連載記事がありますのでブログにメモリます。 テーマはデータ構造です。 Contents1 データ構造とは?2 計算量3 プログラムとメモリ4 配列について4.1 …

no image

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …