TwitterのEffective ScalaページでLazyness [sic]に関するセクションを読んでいました.
この目的 [必要に応じて値を計算してキャッシュする] には遅延フィールドを使用しますが、セマンティクスで遅延が必要な場合は遅延を使用しないでください。このような場合、コスト モデルが明示的になり、副作用をより正確に制御できるため、明示的である方が適切です。
なぜ彼らがこの主張をするのか理解できません。セマンティクスによって遅延が必要な場合にキーワードを使用しない方がよいのはなぜですかlazy
(つまり、単に最適化として使用するのではなく、プログラムの正確さのために必要であることを意味します)。独自の遅延初期化コードを作成すると、言語に組み込まれたキーワードを使用するよりも遅延が必要であるという事実がどのように明確になるかわかりません! lazy
フィールドをスレッドセーフにするために多少の余分なオーバーヘッドがあることは知ってlazy
いますが、それが彼らがここで得ていることだとは思いません...
lazy
このガイドラインの使用に関して、私が完全に見逃している隠れた利点がありますか、それともこの提案を無視する方がよいでしょうか?