質問

ほとんどの関数は、名前に簡単です。一般的に、関数名はそれがないか、結果の型は、それが生成するものに基づいています。

発電機機能の場合、しかし、結果は、いくつかの他のタイプにわたって反復可能であってもよい。

def sometype( iterable ):
    for x in iterable:
        yield some_transformation( x )
sometype名は、関数が名前付きの型のオブジェクトを返していないため、誤解を招く感じています。それは実際に反復可能なオーバーsometypeです。

iter_sometypeまたはgen_sometypeなどの名前があまりハンガリアン記法のようなビットを感じています。しかし、また、機能の意図を明確にするようです。

さらに行く、接頭辞が役に立つかもしれませんより多くの専門例の数があります。 これらは、 itertools のに利用可能であるいくつかの典型的な例です。しかし、私たちはしばしばのは、それを作るいくつかのアルゴリズムの複雑さを持っていることのバージョンを記述する必要があります itertoolsに似てではなく、ぴったります。

def reduce_sometype( iterable ):
    summary = sometype()
    for x in iterable:
         if some_rule(x): 
             yield summary
             summary= sometype()
         summary.update( x )

 def map_sometype( iterable ):
     for x in iterable:
         yield some_complex_mapping( x )

 def filter_sometype( iterable ):
     for x in iterable:
         if some_complex_rule(x):
              yield x

iter_map_reduce_filter_プレフィックスヘルプがジェネレータ関数の名前を明らかにしていますか?それともそれは単なる視覚的な混乱のですか?

プレフィックスが役に立つ場合は、どのような接頭辞の提案をお持ちですか?

サフィックスが役に立つ場合は、

あるいは、どのようなサフィックスの提案をお持ちですか?

役に立ちましたか?

解決

Pythonのdicts iter*メソッドを持っています。そしてlxmlの木々もiterメソッドを持っています。 読み込み

for node in doc.iter():
ので、お馴染みのようです そのパターンを次のように、私はsometypes sometypes_iterの発電機を命名検討したいです 私はanalgously書くことができると、

for item in sometypes_iter():

Pythonはsorted機能を提供します。 そのパターンに続いて、私は動詞の機能を作るかもしれない過去形:

sometypes_reduced
sometypes_mapped
sometypes_filtered

あなたは、これらの機能を十分に持っている場合、それはメソッド名がSomeTypesreduce、およびmapに短縮することができるようfilterクラスを作成しても意味があります。

の機能は、もちろん、それは関数名からsometypeを削除し、代わりにそれはかなりの種類よりも、何を重視する名前を選択することが理にかなって、sometype以外の型を受け入れるか、または復帰するために一般化することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top