質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

JavaScript

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

Q&A

解決済

2回答

8837閲覧

javascriptで関数にしたほうが良いかクラスにした方が良いか分かりません。

roooo

総合スコア57

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

JavaScript

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

0グッド

0クリップ

投稿2017/05/07 02:18

javascriptの大規模開発で、そもそも重複コードをなくしたり、保守性の高いコードを記述するために、関数として記述したほうが良いのか、クラスにしたほうが良いのか分かりません。
デメリット、メリットを教えてください。
参考記事でも結構です。

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

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

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

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

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

guest

回答2

0

ベストアンサー

それぞれ使い分けるのがよいと思います。

特にjavascriptは関数を変数として渡すことが出来るので、非常に柔軟性が高いプログラムが書けます。

rooooさんがおっしゃっている関数というのが、再帰や高階関数を使ったものなのかどうかというので説明が変わってきますが、まずはそういうのを使わないタイプの関数の話からします。

関数はオブジェクト指向でも使います。メソッドと関数の違いは無いです。
オブジェクト指向を使わない場合と考えます。これを(1)とします。

次に、オブジェクト指向を使う場合、これを(2)とします。

最後に、再帰や高階関数を使う場合、これを(3)とします。

(1)関数のみの場合

メリット:
オブジェクト指向や高階関数がわからない人もコードを読むことが出来る

デメリット;
開発規模が大きくなるに従い。扱う関数が多くなり、再利用がされずらい。
開発規模が大きくなるに従い。影響範囲の調査に手間がかかるようになる

(2)オブジェクト指向

メリット:
わかりやすく階層化された記述になりソースが読みやすい
関数に名前が付いているので、機能を想像し易い
再利用がし易い
規模が大きくなっても、影響範囲の調査の増加をおさえることが出来る

デメリット:
オブジェクト指向を学習しなければならない
参照箇所が飛び飛びになるので、ツールを利用する必要がある
オブジェクトの設計を知る必要がある
少し記述が長くなる
javascriptのクラスの記述の仕方は少し独特なので慣れが必要

(3)高階関数などを用いた関数

メリット:
記述量が短い
副作用が少なく、テストし易い(バグが減る)

デメリット:
他の関数型言語などで学ぶ必要がある
一般的に難解とされている

というところです。(独断と偏見があるかもしれません。)

おすすめとしては大規模ということで、基本オブジェクト指向でクラスを使って書き、オブジェクト指向では記述が複雑になる部分は、関数型も含めて色々な手法を使うというのでいくと良いと思います。

特定のやり方が向いている部分というものはあり、記述が難解だからといって禁止するのは帰って複雑なコードを書く原因(そしてバグの原因)になります。

投稿2017/05/08 14:23

iwamoto_takaaki

総合スコア2883

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

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

roooo

2017/05/08 22:31

ありがとうございます! 勉強します。
guest

0

そういうポリシー的な問題を抱えているのならフレームワークを使用した方が良いかと思います。

投稿2017/05/07 02:32

yoorwm

総合スコア1305

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

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

roooo

2017/05/07 02:36

例えば、どんなフレームワークが適しているでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問