0

假设我有一个checkTemperature($temp)可以返回三种不同可能性的函数:

  1. 太热
  2. 好的
  3. 太冷

你会返回整数,比如-1, 0, 1or 1, 2, 3(etc..) 还是字符串,比如上面的?

什么被认为是最佳实践?

4

5 回答 5

11

您通常会使用枚举,但 PHP 并不直接支持枚举构造。但是,我们当然可以效仿他们。

class Temperatures
{
    const TooHot = 1;
    const OK = 2;
    const TooCold = 3;
}

然后你可以做

return Temperatures::TooHot;

并比较

if ($retval == Temperatures::OK)

只要它们不同,您为变量分配的值并不重要。您可以根据您的应用程序和上下文将这些值用于有趣的事情。

于 2012-09-18T19:57:45.533 回答
2

-1 通常是对我遇到的约定中的“未找到”或无效阅读的引用。字符串很容易理解,并且有许多方法可以将字符串分配给数值。例如太冷=-100,太热=100,刚刚好=75。

我会在这个上投票字符串而不是整数。

于 2012-09-18T20:00:16.173 回答
1

就个人而言,我倾向于在有意义的地方使用数字和可比性。向类中添加常量以避免“幻数”效应。

<?php

if ($result == 2) { ... }
// vs 
if ($result == Temp::TOO_HOT) { ... }

// Though can result in some odd code
if ($result > Temp::OK) { echo "that's bad"; }
于 2012-09-18T19:59:22.333 回答
0

为了减少开销,您可以使用#define

define('TEMP_HOT',  1);
define('TEMP_OK',   2);
define('TEMP_COLD', 3);

如果你已经这样做了,那么使用一个类才有意义。

于 2012-09-18T20:12:06.133 回答
-1

在这种情况下没有“最佳实践”。在某些情况下,返回一个字符串会更有意义,而其他时候一个整数会完成这项工作

于 2012-09-18T19:58:31.447 回答