2012-05-01 50 views
0

私はこれらのオプションのワークフロー(#1と#2の比較)を探しています。 私は別のx()関数を呼び出す関数xx()を使用しています。これは汎用プログラミングワークフローです(コードはPython構文ですが、フローロジックは他の言語にも適用できます)。プログラミングワークフロー:どちらですか?引数を関数から関数に渡すか、出力を引数として他の関数に渡すか?

したがって、#1は、ある関数から別の関数に引数を渡す必要があるワークフローを示していますが、#2ではすべての引数を渡す必要はなく、2番目の関数の引数としての最初の関数の出力。

オプション#1:

def x(a): 
    <code> 
    return value 

def xx(a): 
    x=x(a) 
    <code> 
    return value 

print xx(a) 

オプション#2:

def x(a): 
    <code> 
    return value 

def xx(x): 
    <code> 
    return value 

x=x(a) 
print xx(x) 

それは単純な例です。私がこれまでにオプション#1で見つけたのは、すべての引数がx()に渡されてxx()に渡されなければならないということです。

オプション#1

def x(a1,a2,….a100): 
    <code> 
    return value 

def xx(b1,b2,…..b100): 
    x=x(b1,b2,….b100) 
    <code> 
    return value 

print xx(45,'test',....,999) 

オプション#2

def x(a1,a2,….a100): 
    <code> 
    return value 

def xx(x): 
    <code> 
    return value 

x=x(45,'test',....,999) 
print xx(x) 
:たくさんの引数を渡すときの例では、(これは私が複数の引数を渡すために*または**を使用していない基本的な例です) #1で

、def xx()で渡す引数を入力するためにたくさんの 'typing'をしなければなりません。#2はより洗練され、esierでデバッグします。では、これらのワークフローについて、どうやって考えるのでしょうか?ワークフロー#1にはいくつかの利点がありますか?一般的に#2は良いですか?どう思いますか? #1または#2を選ぶ理由は何か。

+0

これに対する答えはもちろん、OOPを使用することです。 –

+0

thanx、コードを修正しましたので、oopスタイルではありません。前の例は正しいものではないかもしれません。私はより一般的にしました。 – andio

答えて

3

select_color_from_objは不要な機能のようです。 get_obj()objの定義が異なるファイルに表示されている場合、あなただけが

obj.color() 

と直接オブジェクトにアクセスすることができ、他のコードと同じスコープ内にある場合は、ちょうどまた

get_obj().color() 

を呼び出すことができ、 get_objが有用かもしれません。

+0

こんにちは私の質問に答えるためのおかげで、はい、それは私が探しているものではない:)私は2つのワークフローの比較を探しています。別のより一般的な例を試してみてください: – andio

+0

私は、これらのワークフローが何を達成しようとしているのかよく分かりません。 OOの上に別の抽象レイヤーを構築しようとしていますか?パブリックメソッドのインターフェイスにはないこれらのスキームはどのような組織ですか?おそらくより精巧な使用法は、より洞察力があるかもしれません。 – kunwoo32

+0

申し訳ありませんが、私の最初の投稿に正当な例が掲載されていない可能性があります。もっと具体的に質問を修正しました。時間があれば再検討することができます。どうもありがとう。 – andio