从框架标准语法中提取字符串是好习惯吗?
Is it good practise to extract strings from framework standard syntax?
例如:在 sonata admin 中,单个 admin class 总是重复出现语法,如
$formMapper->add('test', null, ['label' => 'testlabel']);
$formMapper->add('test1', null, ['label' => 'testlabel1']);
$formMapper->add('test2', null, ['label' => 'testlabel2']);
在这种情况下,如果我使用 add 方法添加多个字段,我们的质量门告诉我,这是使用 'label' 字符串超过 2 次的代码味道。我应该为该字符串添加一个常量...
现在拥有许多 class 充满常量的
是好事还是坏事
const KEY_LABEL = 'label'
$formMapper->add('test2', null, [self::KEY_LABEL => 'testlabel2']);
???
我想不通,有什么好处..如果有一天标签键会改变,这是框架给定的,我必须以任何方式改变这些东西...
简短回答:不。Symfony 不会重命名键。
长答案:Symfony 有一个非常严格的 Backwards Compatibility Promise。 label
键不太可能被重命名。但这并不意味着它不会改变。
如果您必须 'rename' 键,很可能您也必须更改值。这意味着您不是在重命名,而是在替换它。使用常量会帮助您重命名键,但不会帮助您重构值。
我很多年前就开始使用 Symfony(从 2.1 开始,现在正在测试 3.4-beta),过去我不得不执行一些 'renaming'。在几乎所有情况下,密钥都没有被重命名,但它已被弃用,后来被另一个密钥取代。我记得的例子之一是 Choice form type refactorization,但我相信还有更多更好的例子。
例如:在 sonata admin 中,单个 admin class 总是重复出现语法,如
$formMapper->add('test', null, ['label' => 'testlabel']);
$formMapper->add('test1', null, ['label' => 'testlabel1']);
$formMapper->add('test2', null, ['label' => 'testlabel2']);
在这种情况下,如果我使用 add 方法添加多个字段,我们的质量门告诉我,这是使用 'label' 字符串超过 2 次的代码味道。我应该为该字符串添加一个常量...
现在拥有许多 class 充满常量的
是好事还是坏事const KEY_LABEL = 'label'
$formMapper->add('test2', null, [self::KEY_LABEL => 'testlabel2']);
???
我想不通,有什么好处..如果有一天标签键会改变,这是框架给定的,我必须以任何方式改变这些东西...
简短回答:不。Symfony 不会重命名键。
长答案:Symfony 有一个非常严格的 Backwards Compatibility Promise。 label
键不太可能被重命名。但这并不意味着它不会改变。
如果您必须 'rename' 键,很可能您也必须更改值。这意味着您不是在重命名,而是在替换它。使用常量会帮助您重命名键,但不会帮助您重构值。
我很多年前就开始使用 Symfony(从 2.1 开始,现在正在测试 3.4-beta),过去我不得不执行一些 'renaming'。在几乎所有情况下,密钥都没有被重命名,但它已被弃用,后来被另一个密钥取代。我记得的例子之一是 Choice form type refactorization,但我相信还有更多更好的例子。