skillup

技術ブログ

プログラミング全般

コードの抽象化

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

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

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

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

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

コードの抽象化

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

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

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

ユーティリティーコード

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

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

プログラム自体の抽象化

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

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

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

-プログラミング全般
-

執筆者:


comment

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

関連記事

no image

Eclipseでのソースフォーマットでの自動改行を防ぐ

小ネタ。Eclipseのソースフォーマッタはディフォルトでは一定の字数で改行されしまい、大変見にくくなったりします。 またHTMLなどでは改行してほしいタグが改行されないなど思ったとおりに動いてくれま …

no image

小〜中規模程度のWEBアプリ作成で気をつけるべきこと

初見の処理系(ライブラリ操作)などは休日などで最小パターンを確認しておくこと。実務で何時間も悩むと非常にストレスがたまる テーブル設計命。あとで終えるようにトレースができるような値を入れておくこと。 …

no image

ログインしたままにするの挙動に関して(ステートフル認証の基本的な仕組みの復習もかねて)

基礎の基礎ですが、ログイン処理に関しての動きに関して。 Contents1 通常のログイン処理に関して2 ログインしたままにする 通常のログイン処理に関して 通常のログイン処理では、まず以下のような手 …

no image

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

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

no image

CIことはじめ

業務でJavaのテキスト変換ツールを作成。 プログラムよりもCIツールを使って他人の環境下で正常に稼動させるためにどうするかの調査に時間かかりましたね。 今回やりたかったことは下記の通りです。いわゆる …