skillup

技術ブログ

プログラミング全般

コードの抽象化

投稿日:2016年7月8日 更新日:

リーダブルコードも終盤に少しずつ近づいてきました。

今まではどちらかというとコードの点や線の技術に注目してきましたが、これからは面的な要素に注目していきます。

リーダブルコードでは「無関係の下位問題を積極的に見つけて抽出する」とありますが、要は抽象度をあげることと私は解釈しています。

「無関係の」とは「依存度をさげる(疎結合)」ということでしょうか。

コードの抽象化

プログラムというのは処理が複雑にからみあっていればからみあっているほど理解が難しくなりますし、それにともないバグの確率も高くなります。またテストなどもできません。

理想的なコードとは1つ1つの処理が独立した部品のようになっていて、互いに依存することなく切り離せるような関係になっていなければいけません。

そのために下記のような工夫が大切になってきます。

ユーティリティーコード

文字列の処理や配列の処理、ファイルの読み書きなどはどんなプログラムでも使います。このような処理を個別のプログラムに1つ1つ書いていると同じ事を何度も書くことになります。このような処理は「ユーティリティークラス」として独立したクラスにしておくのが良いでしょう。

PHPなどでは言語自体にこういったライブラリが組み込まれており、特に配列がらみの処理などは充実しています。

プログラム自体の抽象化

ユーティリティーは完全に独立した処理ですが、完全には独立していなくてもプロジェクト内部で共通した処理を汎用化するだけでもかなり意味があります。簡単に言えば、パッケージ全体で使用する関数はより上部のクラスに共通のメソッドをして持たせるほうが良いでしょう。

インターフェイスを簡潔にする

インターフェイスが汚い場合(引数が多い、処理が複雑)は引数をととのえたり、事前のメソッドをつくなりして、わかりやすい形にしましょう。

-プログラミング全般
-

執筆者:


comment

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

関連記事

no image

正規表現に関して

SQLネタをいろいろと書いておりますが、ちょっとワンポイント的なネタで正規表現について書きたいと思います。 平均的なものは知っているつもりでしたが、シェルの正規表現について知らなかったのでちょっとメモ …

no image

emptyの扱いに関して

PHPで空白や存在確認として便利なemptyですが、乱用すると意図しない動きをすることがあるケースが多々あります。 Contents1 emptyの挙動に関して2 数値の03 検索などの全判定と値のな …

no image

オブジェクト指向 アプリケーション間連携(主にWebAPI)

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日はプレゼンテーション層、いわゆるMVCのViewにあたる部分。 Contents1 アプリケーション間連携(主にWEBAPIに関 …

no image

読みやすいコードについて

コードリーディングにおいて聖典となっているリーダブルコードについて読んでいこうかと。 ただ読んでいくだけではつまらないので、自分なりの考え方も書いていきます。 Contents1 優れたコードの定義1 …

no image

テストコードを読みやすくする

リーダブルコードも最終章に近づいてきましたね。 今回はテストコードについて。 以前のプロジェクトではテストコードを書いていたのですが、今携わっているプロジェクトでは書いてないです・・・ テストを書く目 …