the*_*art 0 formatting design-patterns ternary-operator
我的办公室已经讨论过使用三元运算符.这次讨论有两个方面.
方面1)三元运算符易于编写和读取,因此便利性是节省的净成本.
方2)三元运算符难以维护,因为它们需要过多的代码流失,如果它们需要被修改为甚至稍微复杂一点.
额外的书呆子点,如果你能引用顶级机构在这个问题上所做的任何实际研究......我很有兴趣看到这方面的硬数据.
我的理论是,最好的代码是可以轻松改变和适应的代码,并且变化所需的复杂性越小,中断的可能性就越小.例:
$id = $user->isRegistered() ? $user->id : null;
Run Code Online (Sandbox Code Playgroud)
好的,所以这是完全有效的,但是当代码需要改变成稍微复杂的东西时会发生什么?
$id = null;
if ($user->isRegistered() || $user->hasEmail()) {
$id = $user->id;
}
Run Code Online (Sandbox Code Playgroud)
任何理智的程序员都会查看三元组并转换为标准if/else.但是,这需要进行4行更改,而不是从以下开始:
if ($user->isRegistered()) {
$id = $user->id;
}
Run Code Online (Sandbox Code Playgroud)
这只需要1行更改.
我发现一旦你习惯了语法,两个选项都同样可读(前提是你不会过度使用),所以这对我来说不是问题.
至于哪个更节省时间,我会回答一个令人讨厌的问题 - 你为什么关心?这两个选项都需要不到20秒的时间来转换为等效的if语句.
就个人而言,我发现当我找到方法凿出我的编程时间时,这是一种拖延.当我专注于完成任务并让小的可读性细节通过经验自行完成时,我工作得最好.