是使用数值而不是预先确定的常量不良做法?

时间:2017-10-10 15:22:33

标签: php pdo coding-style constants

所以这是一个非常简单的例子:

$sth    = $dbh->prepare("SELECT foo FROM bar");
$result = $sth->fetchAll(PDO::FETCH_ASSOC);

使用PDO::FETCH_ASSOC的值代替常量本身是否被视为不良做法?

如果你写了很多代码,这会更快一些(原因不仅在这个例子中)

$sth    = $dbh->prepare("SELECT foo FROM bar");
$result = $sth->fetchAll(2);

所以改为使用PDO::FETCH_ASSOC - 只是2,这是PDO::FETCH_ASSOC的值。

我目前看到的最常用的用法是error_reporting(24567)而不是error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED) (或类似的用途)

我知道其他代码维护者很难理解这段代码。但是有什么缺点吗?

2 个答案:

答案 0 :(得分:2)

  

如果你写了很多代码

...然后你做错了什么。 编程代表尽可能少编写代码。例。写下以下代码一次

$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

然后再写

$result = $sth->fetchAll();

没有任何参数,无论是常数还是数字。

更不用说

  

我知道其他代码维护者很难理解这段代码。

单凭这个原因绰绰有余

答案 1 :(得分:1)

  

使用PDO::FETCH_ASSOC的值代替常量本身是否被视为不良做法?

是的,这是不好的做法

  

我知道其他代码维护者很难理解这段代码。但是有什么缺点吗?

是的,PHP MIGHT 将来会更改与常量相关联的值。 - (对bassxzero所说的内容略有修改)

最佳做法编写代码的简易性无关。如果是,我们默认都会使用它们。它们是关于维护代码的简易性。它们是关于在坚实的基础上构建代码,因此它可以度过风暴。

另外,从概念上讲,你不是真的将数值2作为参数传递,你传递的答案是"获取一个关联数组" 以数字2表示