擅长:python、mysql、java
<p>我不知道这是否更像Python,但我确实发现它更容易一眼就能理解</p>
<pre class="lang-py prettyprint-override"><code>
def is_notification_needed(request: RiverPreference, gauge: Gauge) -> bool:
"""
Decides whether an email should be sent to the user or not based on their provided preferences.
:param request: RiverPreference dataclass
:param gauge: Gauge dataclass
:returns: boolean
"""
preference = request[0]
if preference.trend is None:
if preference.level is None:
return False
return preference.trend >= gauge.level
elif preference.level is None:
return preference.trend == gauge.level
return preference.level >= gauge.level and preference.trend == gauge.trend
</code></pre>
<p>这里的主要原则是尽早消除<code>None</code>情况,然后依赖于我们知道这些值已定义的事实,在后续代码中使用</p>
<p>如果由于其他原因,值也可能是<em>假</em>,则可能将<code>is None</code>更改为不太具体的值</p>