プログラムの素朴な質問です
分岐するコードを書く時に、
/**
* 関数
*/
sub(){
....
}
/**
*関数を呼び出すフロー
*/
main(){
...
if(isOk){
sub()
}
...
}
というように書くのと
/**
* 関数
*/
sub(
isOk /* 真偽値 */
){
if(isOk){
....
}
}
/**
*関数を呼び出すフロー
*/
main(){
...
sub(isOk)
...
}
と書くのはどちらの方が見やすく使いやすいのでしょうか?
オーバーヘッドのことを考えると後者は論外でしょうけども...
No.7ベストアンサー
- 回答日時:
コード云々よりも、
JavaDoc を単純にわかりやすく書けるかで判断しましょう
前者の例)
Δ を ε します.
@return ε の結果
後者の例)
α が β を γ した場合に限り Δ を ε します.
@param isOK α が β を γ したら true
@return α が β を γ した場合は ε の結果, それ以外は null
No.6
- 回答日時:
>callSubByChecked(
>yes /* 真偽値 */
>){
>if(yes){
>sub()
>}
>}
何の為の関数でしょう?
分岐するだけならifで充分。
皮を被せる分ロジックが分散して
分かりにくくなるだけです。
No.4
- 回答日時:
C言語?
カテゴリ的には違うか・・・・・・。
> 補足として、isA,isB,isCみたいな分岐が5つ以上ある時も同様の結論ですか?
個人的には、だよ。
しかもC言語じゃないとすれば。
しかも連想配列とラムダ式が使える言語なら。
「分岐が5つ以上ある」時点で連想配列を使うトリックに持ち込めないか、って考えちゃう。
多分バカ正直にSubは書かんね。
ただ、それでも、構造的には、「何らかの判定をくだして連想配列から(関数を含む)データを持ってくる」にせよ、その「指令を出す」のは上の例で言うとmain関数の役目じゃねぇのかな。
Subが真偽値を返す事はあり得ても、Subが真偽値を引数として取る、ってのはどのみち不自然な気がするよ。
No.3
- 回答日時:
>isA,isB,isCみたいな分岐が5つ以上ある時も同様の結論ですか?
処理の指示に不可欠なパラメー夕ならOKですよ。
分岐がどうのこうのは全く関係ないです。
形じゃなくて意味で考えましょう。
sub()が何のためにある処理なのか明確で
出来うる限り単機能であり
isAとかがその処理に必要なパラメー夕なら
何の問題も無いです。
無秩序に上位処理の都合で機能が曖昧で多機能になり
その分岐のためにフラグパラメー夕を増やすやり方は
最悪のバッドプラクティスとして知られてます。
ソフトのメンテナンスの大きな障害になります。
ありがとうございます。
処理に不可欠なパラメータか?はあまり考えて欲しくないため以下のような関数を別に作るケースを考えます。これはありですか?
callSubByChecked(
yes /* 真偽値 */
){
if(yes){
sub()
}
}
No.2
- 回答日時:
これだけでは何とも言えないけど
isOk が subの処理(機能)にとって必要不可欠なら
最後の形式で良いが、単に sub の中身を実行するかしないか
制御するために引数を渡すのは言語道断。
上位で判断するべきものを下位のルーチンに無理に引き摺りこませる
のは、処理が複雑化するだけで、メリットが無いです。
シンプルイズベスト
パラメータによって何もしないことがその処理の一つのやり方に
なっているなら良いのですが、そういう理由も
何もなしに上位処理の都合だけでそういう実装をすることは
好ましくないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- Visual Basic(VBA) vba userFormのSubを標準モジュールから呼び出す方法を教えてください 2 2023/10/17 15:06
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Visual Basic(VBA) VBAに関する質問です 2 2022/03/30 22:44
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) vba Sleep関数について教えてください 1 2023/01/18 10:18
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Excel(エクセル) 【VBA】PDF出力に任意のファイル名前を付ける方法 3 2023/07/21 10:55
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
ものづくりに向いているプログラミング言語ってなんですか?家電にもプログラミングが使われてるとか
その他(プログラミング・Web制作)
-
プログラミング言語の制作方法について
C言語・C++・C#
-
C言語って古いですか?
C言語・C++・C#
-
-
4
c言語
C言語・C++・C#
-
5
これなにがちがうんですか??
C言語・C++・C#
-
6
C言語の関数と配列に関する質問
C言語・C++・C#
-
7
WindowsのCapsLock(キャップスロック)って、何の意味があるんですか?
C言語・C++・C#
-
8
double型が正常に認識されていない恐れ
C言語・C++・C#
-
9
VisualStudio2022でC言語プログラムで全角文字を使用すると不明なエラーが表示される
C言語・C++・C#
-
10
どなたかこのプログラミングを完成させて欲しいです。 ヒントはこちらです↓ 青色:ゲームプログラムのル
C言語・C++・C#
-
11
そのまま使っただけなのに・・・python
その他(プログラミング・Web制作)
-
12
pythonの条件分岐(if)
その他(プログラミング・Web制作)
-
13
IT業界より楽に稼げる業界ってあるんですか?銀行とか?
その他(プログラミング・Web制作)
-
14
gccを行ってもexeファイルが生成されない
C言語・C++・C#
-
15
[C言語]fputsとfprintfの違い
C言語・C++・C#
-
16
Javaって使いますか、もう古いですか?C++とどっちがいいですか?分析でC++使う授業ありましたけ
C言語・C++・C#
-
17
C言語 バッファについて。
C言語・C++・C#
-
18
擬似コード
C言語・C++・C#
-
19
C言語について
C言語・C++・C#
-
20
LinuxカーネルのCFSで用いられているような
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB6.0】 あるフォームから他...
-
プログラムの素朴な質問です 分...
-
VB6のFriendについて
-
【HTML、VBScript】HTAアプリケ...
-
パーソナルXLSBのfuctionを呼び...
-
プロシージャを呼び出したプロ...
-
整数を二つ読み込み、それらの...
-
【VBScript】変数のスコープ
-
プロシージャまたは関数の引数...
-
Excel VBA カーソルを当てた際...
-
Functionの戻り値を配列にした...
-
VBA public変数はどのようなこ...
-
他のフォームから別のフォーム...
-
C言語のサフィックスについて
-
アクセスできない保護レベルエ...
-
チェックボックスを操作できな...
-
C#のループでtextboxに値を入れ...
-
VB.NETでのイベントの途中終了
-
レコードセットにnullの場合
-
ClickとChangeイベントの違いは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムの素朴な質問です 分...
-
【VB6.0】 あるフォームから他...
-
プロシージャまたは関数の引数...
-
PL/SQLのプロシージャ間でカー...
-
パーソナルXLSBのfuctionを呼び...
-
【HTML、VBScript】HTAアプリケ...
-
定数を構造体で・・・
-
HTML + VBScript で Sleep でき...
-
Callで呼び出したプロシージャ...
-
整数を二つ読み込み、それらの...
-
変数を複数のモジュール間で共...
-
プロシージャを呼び出したプロ...
-
【VBScript】変数のスコープ
-
VB6のFriendについて
-
VB.NETのグラフィック描画で困...
-
ExcelのVBA。Staticな変数について
-
subを連続で実行する
-
文字列をINTEGER型に変換
-
subプロシージャーですか?sub...
-
変数の宣言はすべきでしょうか...
おすすめ情報