githubの大企業によるオープンソースプロジェクトで、彼らは可能な限り小さなステップで簡単なプログラムを実行しているのを見てきました。
高度なメソッドを使用してコード行を最小限に抑えようとします。これにより、単純な関数呼び出しでさえ複雑に見えます。
どうすればこれらのことを理解できますか。それは高度な概念ではなく、効率的な方法で単純なことを行うことであり、それがコードを理解しにくくします。
例として、これはscrapyのcrawlerSpiderのコードです。
def identity(x):
return x
class Rule(object):
def __init__(self, link_extractor, callback=None, cb_kwargs=None, follow=None, process_links=None, process_request=identity):
self.link_extractor = link_extractor
self.callback = callback
self.cb_kwargs = cb_kwargs or {}
self.process_links = process_links
self.process_request = process_request
if follow is None:
self.follow = False if callback else True
else:
self.follow = follow
これは彼らがルールを使用した場所です
rules = ()
for link in links:
r = Request(url=link.url, callback=self._response_downloaded)
r.meta.update(rule=n, link_text=link.text)
yield rule.process_request(r)
今、私はidentity function
そこで何もしていないの使用が何であるかを理解することができません
process_request = identity
つまり、
rule.process_request(r) = identity(r)
whcihはr
、基本的に次のようになります。
yield r
。なぜ彼はアイデンティティの代わりにその単純な行を書くことができないのですか。
このように理解できないことがたくさんあります。
そのようにプログラムを書くことを説明している本はありますか?データ型で始まる本が章ごとに進むのは好きではありません。最終的には、githubにあるようなプログラムが1つも表示されません。