- Coding Methodology
- 第95回 extend()メソッドで複雑なデータをまとめる
第95回 extend()メソッドで複雑なデータをまとめる
データのわずかな違いで、似た処理なのに複数の記述を書いてしまう事があります。その度に違うデータごとにコードを書いてしまうと、ソースが膨大になり、汎用性・可読性・更新性が失われてしまい、修正や運用のフェーズに負担がかかってしまいます。そんなときに、処理をまとめるのに便利なのがextend()メソッドです。今回はextend() メソッドを使ったデータのまとめ方をご紹介します。
■extend() メソッドとは
複数のオブジェクトをマージして返してくれるメソッドです。変数の値の書き換えをする時に使われます。
使用されるシーン
・ 部分的な値の上書き/追加
・ 一律のパターンデータの引用/統合
・ jQueryプラグインにあるオプション機能の実装
使用形式(ver.1.1.4以降)
1. Targetの値にobject1からobjectNの順で値が上書きされていきます。
2. deepの値がtrueの時はオブジェクト内のネスト(入れ子)の値も再帰的なマージを行うようになります。
■通常の上書き(マージ)との違い(図1)
extend()メソッドの最大の特徴はその上書き方法にあります。
通常の代入式などの値の書き換えの場合、元のデータは残らず一新されてしまいます。図1の場合、代入データA,Cのみが残っています。
しかし、extend()メソッドを使った場合、元のデータを維持して各データを確認しながら上書きを行います。図1では処理中に同じAというデータがあれば、中身の書き換えが行われます。(このような上書き方法を再帰的マージといいます。)
■複雑なデータを extend() でコンパクトにまとめる(図2)
extend()メソッドは設定データを作るのに便利です。複数のデータを順に上書きの処理をすることが可能な為、図2のようにデータの詳細度を作り、①デフォルトデータ、②同一パターンデータ、③個別の違いのあるデータと順を追って値の上書きをすることができます。
これにより、複雑なデータを作る場合でも、個別の違いのみを修正すればよいので少ないコストで調整と量産が行えるようになります。
■まとめ
extend()メソッドは制作初期段階で少し手間はかかってしまいますが、このひと手間によって、その後の運用や修正作業のメンテナンス性を向上させることができます。データに規則性がある時、ちょっとした調整が必要な時、とても役に立つメソッドになっています。シンプルな使用方法の分、単体では役に立ちにくいextend()メソッド。しかし、引数と組み合わせて使用する事でjQueryプラグインのオプション機能を実装することもできます。オプション機能を実装したサンプルをgithubに公開していますので、実践的なextend()メソッドの使い方の参考に是非ご活用ください。