JavaScript入門 練習問題 11:オブジェクト指向プログラミングとモジュール化
ユーザー管理システムで、複数の関連する機能をまとめて管理したい場合、最も適切な実装方法はどれですか?
- 個別の関数として定義する
- オブジェクトリテラルでまとめる
- グローバル変数として定義する
- クラス定義を使用する
- IIFE(即時実行関数式)で囲んでグローバルを隠す
Qraftユーザーの成績:難易度 Bランク(レーティング1211)・正答率 66%(27/41回正解)
レーティングは解いた人の実力と正誤から算出する難しさ(初期値1200)。ランクはその全問題中の順位(S+が最難関、F-が最易)
正解と解説を見る
正解:オブジェクトリテラルでまとめる
関連する設定値・状態・メソッドを1つにまとめたい場合、オブジェクトリテラルが最も適しています。
【正解の理由】
オブジェクトリテラルはthisを使ってプロパティ(状態)とメソッド(機能)を1つの変数にまとめられ、変数名の衝突を避けつつ関連する処理を一箇所に集約できます。userManagerのように機能をまとめることで保守性・可読性・再利用性が向上します。
【不正解の理由】
• 個別の関数として定義する:関数同士でデータ(状態)を共有しづらく、変数名の衝突リスクもあります。
• グローバル変数として定義する:他のコードと変数名が衝突しやすく、意図しない箇所から値を書き換えられる危険があります。
• クラス定義を使用する:複数のインスタンスを作る必要がある場合に向いた手法で、今回のような単一の管理オブジェクトにはオブジェクトリテラルの方がシンプルです。
• IIFE(即時実行関数式、=定義と同時に実行される無名関数)で囲んでグローバルを隠す:変数の衝突を避ける手段にはなりますが、状態や機能をまとめて管理する目的には、そのままオブジェクトリテラルを使う方がシンプルで適切です。