5

是否有理由在需要数组的地方使用字符串?

我有一个开发人员想要传递一个分隔字符串,在数据库类方法中分解它以从 2 个单独的字符串中提取多个字段/值对。我想不出不发送字符串数组的理由。

例子:

$s = "value1|value2|value3" ;
$s2 = explode("|", $s);

与数组

$s3 = array(
    "1" => "value1",
    "2" => "value2",
);

我知道这个想法实际上是传递未知数量的键/值对,但我不认为你爆炸的字符串是答案。但我可能是错的。

4

2 回答 2

3

我想不出不发送字符串数组的理由。

字符串是单个实体。您的同事使用字符串“object”(变量或实体意义上的对象)使其携带信息,这是一种非常小的领域特定语言形式。

但正如它已经表明的那样,这只是开销而不是必要的。可能那个人只是懒惰打字,认为这更酷。实际上更酷的是,只需升级 PHP 并使用新的数组表示法。它也很短,并且它比首先需要解析器的字符串(这里以分隔字符爆炸)携带更多信息:

explode("|", "value1|value2|value3");

array("value1", "value2", "value3");

["value1", "value2", "value3"];

如果你想知道你的同事有多认真:他在玩。玩是可以的,但如果他需要进行强力游戏以表明他可以将其作为一种风格压制到共享代码库中,那就打他的手指。那是愚蠢的。如果您需要一个数组,请传递一个数组。

这不像让我们说正则表达式。这只是你的同事在代码库中引入问题的一些自嘲。仅仅因为某事是可能的并不意味着它更好。

我想不出不发送字符串数组的理由。

好吧,我可以想象一些可能的原因:

  • 其他人只是想表明他们对你的了解不同并且有能力说服项目中的其他人(社会问题)
  • 你不能接受你在团队中的地位太低,你甚至不能做出合理的论据来说服其他人,你跑到这里来抱怨,因为你希望你能找到更多的力量而不是响应升级@你的团队(社会问题)
  • 那家伙只是个混蛋,想要引入秘密的复杂性,以便只有他可以编辑和更改代码(职业管理,也可能是社会问题的标志)。

请不要太认真地对待这些评论;)你问没关系,但没有太多答案,因为这闻起来很可疑,因为可能有一些原因表明这样的东西可能有用(尽管我对此表示怀疑,因为有些小 OOP 的东西在这里开始看起来非常不同)。所以它总是取决于,但尽量保持你编辑的代码易于编辑并且不要添加太多魔法。可以将该字符串视为一个魔术数组。

于 2012-06-09T12:15:31.213 回答
0

我会说这对于 100% 准确的答案来说是不够的。在大多数情况下,答案是否定的。但这可能是一些特定情况。

您从哪里以及从哪里传递数据?

有时您认为的数组实际上是(或曾经是)一个字符串,例如,如果“底层”层是 JSON 或 XML。通过内爆/爆炸字符串来传递和解析数据可能会更快——但同样,对此没有共同的答案,它取决于很多事情,例如数据的数量和结构。你应该尝试并测试它。或提供更具体的信息:)

于 2012-06-08T13:13:50.870 回答