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

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

新規登録して質問してみよう
ただいま回答率
85.35%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

2回答

1205閲覧

メソッドの引数の型について

退会済みユーザー

退会済みユーザー

総合スコア0

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

1クリップ

投稿2020/09/22 05:07

編集2020/09/22 05:57

メソッド内の引数の数、型定義について検討をしています。
例えば、以下のPHPがあったとします。

php

1use Illuminate\Http\Request; 2 3$str1 = '文字列A'; 4$str2 = '文字列B'; 5$obj = new ClassA(); 6$obj->methodA($str1, $str2, $request);

php

1class ClassA { 2 public function methodA($str1:string, $str2:string, $request:Request) { 3 // code 4 } 5}

$requestはオブジェクト変数なので、引数の数が少なくなりコード全体が見やすくなると思います。
コントローラー上からの利用するのであればいいと思うのですが、
一方でClassAのテストコードを作成すると、いちいちオブジェクトを作成する必要があり、
そうなるのであれば、各データ毎に変数を用意した方がいいのではと思ったりし、
最適解がわかりません。

どのような書き方をするのがベターなのでしょうか。
PHPを例にしていますが、言語には拘らない回答を求めています。

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

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

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

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

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

guest

回答2

0

ベストアンサー

一方でClassAのテストコードを作成すると、いちいちオブジェクトを作成する必要があり、

そうなるのであれば、各データ毎に変数を用意した方がいいのかなと思ったりし、
最適解がわかりません。

「いちいちオブジェクトを生成」がデメリットであると思っているのであれば、オブジェクト指向というパラダイムを採用するべきではありません。

これは構造体でも同じですが、意味的な集まりをまとめて人間が理解しやすいようにするためにクラスや構造体を導入するものなので、要件を分析して得られた「意味的なグループ」があるのであれば、その設計に基づいて実装を行うだけです。

「各データ毎に変数を用意」するのが良いケースというのは、その各データ間の関係が疎で、このメソッド以外では別々に処理をする対象となっているなど、それなりの理由が先にあるはずです。

投稿2020/09/22 05:15

gentaro

総合スコア8947

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

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

退会済みユーザー

退会済みユーザー

2020/10/02 00:32

ご返信が遅くなりました。 ご回答ありがとうございました。
guest

0

What is the basis to determine if one is better? i think it will be best to execute depending on the design you're going for, rather than the grouping

投稿2020/09/24 10:18

EmmaBabe

総合スコア32

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問