• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関数をまとめる)

関数をまとめる方法と、その利点

このQ&Aのポイント
  • 関数をまとめる方法として、複数の機能を持つ関数を作成し、引数で機能を制御する方法があります。
  • この方法では、関数の中身を確認しながらプログラムを書く必要がありますが、機能ごとにまとまりがあり、可読性を高めることができます。
  • 一方で、関数を細かく分ける方法でも同じ結果を得ることができますが、関数の数が増えるため、管理が複雑になる可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjk65536
  • ベストアンサー率59% (66/111)
回答No.5

どういうケースで関数化すると良いのか迷ってらっしゃることと思います。 基本的には(ざっくり言うと) ・意味のある複数行の処理 ・複数回出現する処理 を関数化します。 個人的にはデザインパターンの本などを一度読まれるとすっきりするのではないかと思います。 リファクタリングの本なども関数化の指標を示してくれますのでお勧めです。 ご質問の件では関数化する意味もメリットもなく、他の人がこのソースを読んだ時に 意図が不明で読む効率を低下させます。 話は変わりますが、ちょっとした処理ならマクロ関数で #define add(x,y) (x+y) とする手もあります。 このケースではオススメしませんけど。

その他の回答 (6)

  • TT414
  • ベストアンサー率18% (72/384)
回答No.7

>#define add(x,y) (x+y) >とする手もあります。 >このケースではオススメしませんけど。 このケースどころか、人に勧める以前に、発表するだけでも恥ずかしい記述です。 ど素人以外は「#define add(x,y) ((x)+(y))」と記述します。

回答No.6

質問者の意図を汲んでいないかもしれませんが、やっている内容が同じような関数をまとめておきたいのなら、名前空間を使うのはどうですか。 namespace arithmetic_operations { int add(int a, int b) {    return a + b; } int multi(int a, int b) {    return a * b; } } #include<iostream> int main(void) {    int a = 4;    int b = 3;    std::cout << arithmetic_operations::add(a, b) << std::endl;    std::cout << arithmetic_operations::multi(a, b) << std::endl; }

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

わたしなら、この形ではやりませんね。 これって、このまま進めたら「main関数に全部書く」のが「一番まとまっている」ってことになります。 add,multi等を場合によって使い分けるなら、関数オブジェクトとかポインタとか。 switchで分岐するにしても nt arithmetic_operations(int a, int b, CalcOperator pattern) {    switch(pattern) {       case CALC_ADD:          retrun add(a , b);       case CALC_MULTI:          return multi( a, b); (以下略) などと、元の関数はそのままにします。 分岐が少なく、回数も1箇所なら、そのままmainに書くこともあります。

  • OKWavex
  • ベストアンサー率22% (1222/5383)
回答No.3

どっちもかわりません わざわざまとめるひつようあるか?と思ってしまうていどのものですし・・・

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

関数オブジェクトなり関数へのポインタなりを使えば「中をとった」ようには見えるでしょう. 今ならラムダか?

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

add()とmulti() 見た目同じだけど、やっている内容は違いますし arithmetic_operations()だと引数patternのチェックもする必要がありますし、 arithmetic_operations()と書かれたソースを見たところで何をやってるのかわかりませんから。 arithmetic_operations()は、処理の複雑化+難読化した上、それに目をつぶれるだけのメリットがあるわけでもない。 と私は思いますが。

関連するQ&A