【问题标题】:Is it good practise to extract strings from framework standard syntax?从框架标准语法中提取字符串是一种好习惯吗?
【发布时间】:2018-04-23 12:37:00
【问题描述】:

例如:在奏鸣曲管理中,单个管理类总是有重复的语法,如

$formMapper->add('test', null, ['label' => 'testlabel']);

$formMapper->add('test1', null, ['label' => 'testlabel1']);

$formMapper->add('test2', null, ['label' => 'testlabel2']);

在这种情况下,如果我使用 add 方法添加多个字段,我们的质量门会告诉我,这是使用“标签”字符串超过 2 次的代码异味。我应该为该字符串添加一个常量...

现在有很多类充满常量是好还是坏

const KEY_LABEL = 'label'

$formMapper->add('test2', null, [self::KEY_LABEL => 'testlabel2']);

???

我不知道,有什么好处..如果有一天标签键会改变,这是由框架给出的,我必须以任何方式对这些东西进行更改...

【问题讨论】:

  • 我看不出有任何理由使用它作为常量。代码嗅探器并不总是正确的。
  • 我建议不要更改您使用的捆绑包的工作方式。正如您正确指出的那样,标签可能会更改,您不希望仅仅为了更改标签就必须遍历整个代码库。如果不是零,收益实际上接近于零。正如@Andrew 所说,代码嗅探器并不真正理解他们正在检查的代码,在这种情况下,他们只是愚蠢。
  • 除了@tchap 我认为只使用PSR2就足够了。 /usr/local/bin/phpcs --standard=PSR2.
  • 很遗憾,代码质量显然可能会因为这些奇怪的规则而变得糟糕......

标签: php symfony sonata-admin code-standards


【解决方案1】:

简短回答:不。Symfony 不会重命名键。

长答案:Symfony 有一个非常严格的Backwards Compatibility Promiselabel 密钥不太可能被重命名。但这并不意味着它不会改变。

如果您必须“重命名”一个键,很可能您也必须更改该值。这意味着您不是重命名,而是替换它。使用常量可以帮助您重命名键,但不会帮助您重构值。

我多年前开始使用 Symfony(从 2.1 开始,现在正在测试 3.4-beta),过去我不得不执行一些“重命名”。在几乎所有情况下,密钥都没有被重命名,但它已被弃用,后来被另一个密钥替换。我能记住的例子之一是Choice form type refactorization,但我相信还有更多更好的例子。

【讨论】:

  • 在阅读了其他关于此的声明后,我现在完全同意。谢谢
猜你喜欢
  • 2017-08-09
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多