🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

1015閲覧

JavaScript(ts/node)でのClassの正しい使い方

mouse_484

総合スコア759

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2019/12/02 02:22

前提・実現したいこと

JavaScriptでClassベースで開発をしています。
Classの中身が増えてきたら以下のように別のClassにしようと考えたのですが、Class内でいくつもnewを使うのがおかしいのではないかと考えました

該当のソースコード

js

1class d{ 2 ... 3} 4 5class a { 6 constructor(bb) { 7 this.bb = bb; 8 } 9 c(cc){ 10 new d(); 11 } 12}

試したこと

Classを複数使う or 単純な関数を使う

どちらもしっくりこなかったので何か良い実装を教えてほしいです。

補足情報(FW/ツールのバージョンなど)

node,ts

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

new d(); という式は基本的には新たにオブジェクトを作成するときに使うものです.
new して作成したオブジェクトはメンバとして保持するのが正しいのでは?
もしくは extends する場合, super を使って継承元クラスの機能を呼びましょう.

また「中身が増えたから別のクラス」にするとしても, 必ずそこにはオブジェクト指向設計上の根拠が必要になります.
ざっくりと言うと, extends (A は B (の一種) である) すべき関係と, メンバとして保持 (A は B を持つ) すべき関係が考えられます.
どちらがふさわしいのかは, 「車と車種」「車とタイヤ」のような継承なのか保持なのか分かり易いものもあれば, そうでないものもあるので最終的には場面によります.

例えば「ユーザ」というクラスの中身が増えて別のクラスを作るとしても, 以下のような根拠付けがあり得ます:

  • ユーザの「種別」によって保持すべきものが違うので, 共通部分をユーザ共通クラスで持ちそれを種別ごとに extends, 継承先で super を使って継承元のメソッドを呼ぶ.
  • あれこれ沢山の要素を詰め込んでしまっているので要素を分類し, 分類ごとに別のクラスを作り, ユーザクラスで保持.

などなど...どんな分解をするにしても, そこにしっかりと根拠があるのであればメンバとして別の要素を new するのは問題ないのでは.
逆に無秩序に new するのであれば, 設計を見直すべきかと.

投稿2019/12/02 02:46

kagilinn

総合スコア354

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mouse_484

2019/12/02 02:53

>あれこれ沢山の要素を詰め込んでしまっているので要素を分類し, 分類ごとに別のクラスを作り, ユーザクラスで保持 これをやろうとして色々見失ってました Object思考の考え方を少し勉强したいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問