0

これら 2 つのプログラミング手法の間で好みのコンセンサスはありますか? あなたが選択したパラダイムについて、賛否両論のスケールで、なぜ私に説明していただけますか.

(i) プログラムには、何らかの入力に対して実行する必要がある 3 つの機能があります。最初を実行し、返された変数を取得し、その変数を使用して 2 番目を実行し、3 番目についても同じことを行います。最後に、3 番目の返された変数を出力します。

func1(){ return f1 }
func2(){ return f2 }
func3(){ return f3 }
main(){
fin=# of inputs
i=0
while i<fin
   first=func1(in[i])
   sec=func2(first)
   third=func3(sec)
   print(third)
   i++
}  

(ii) プログラムは一連の命令をステップ実行し、最初にメイン関数から最初のドミノをプッシュします。

func1(){ func2(newfrom1) }
func2(){ func3(newfrom2) }
func3(){ print(newfrom3) }
main(){
fin=# of inputs
i=0
while i<fin
   func1(in[i])
   i++
} 
4

2 に答える 2

0

func1最初のアプローチはより再利用可能です。後で他の何かに行うことは何でもしたいのですが、後でやりたくない場合はどうすればよいでしょfunc2func3か? func1最初のシナリオでそれらを呼び出すように記述されている場合は、すべてを変更する必要があります。

私の好みは、単一の関数が実行するのに意味のある「操作」を特定しようとすることです。それを実行する関数を作成し、より複雑なものについては、いくつかの小さな関数を呼び出して目的を達成する別の関数を作成します。その後、これらの小さな関数のいくつかが後日別の場所で使用されることがよくあります。

はい、これにより、より多くの関数呼び出しが残り、おそらくより多くの一時ストレージが使用されますが、コンパイラーにそれについて心配させます-パフォーマンスの問題であることが判明した場合は、対処します. ただし、通常、パフォーマンスは他のものによって損なわれます。

于 2013-01-31T09:21:00.597 に答える
0

私が見る唯一の違いは、バージョン 2 が変数を使用して中間結果を格納することです。
したがって、パフォーマンスの観点からは、コンパイラはこれらの中間結果を両方のバージョンでレジスタに格納するため、違いはありません。しかし、これはプロファイリングで確認できます。
しかし、私にとっては、バージョン 1 の方が読みやすく、したがって優れています。

于 2013-01-31T09:13:14.127 に答える