【发布时间】:2020-09-18 16:28:48
【问题描述】:
我觉得这个问题与语言无关,但我将使用 PHP 作为示例
abstract class myUserClass {
private $last_visit = null;
abstract getLastVisit() ?string;
abstract secondsSinceLastVisit() int;
}
假设您在对象上有一些日期时间(如 last_visit)属性
last_visit = 2020-10-10 09:25:25
last_visit 可以是日期时间的字符串表示或用户从未访问过的null
然后你有一个像secondsSinceLastVisit() : int这样的方法
这个函数返回一个int,代表自last_visit以来的秒数
last_visit 为空时返回的最佳做法是什么?
我们可以:
return null 这意味着这是未定义的
返回some_really_large_number意义-很久以前
还有什么???
我遇到了麻烦
if( !$user->secondsSinceLastVisit() )
{
//user has never visited
}
当secondsSinceLastVisit() 返回零时,这在某些单元测试中失败了! 0
所以,我通过测试更改为 is_null( $user->secondsSinceLastVisit() ) 解决了这个问题
我的问题本质上是一般性的 - 当last_visit 为空时,secondsSinceLastVisit() 的返回值有什么好的做法?
【问题讨论】:
-
为什么人们认为任何人都被“什么是最佳实践”所愚弄
-
@RiggsFolly “i 在 e 之前,c 之后除外”。嗯....这适用于“e之前的o,除了p之后”吗?呵呵。
-
@FunkFortyNiner Nicked
-
如果我实现这个,我会返回 null。
标签: php datetime return-value return-type