如何处理源代码中更改功能和产品名称?

时间:2009-10-06 16:31:42

标签: version-control coding-style naming-conventions naming

在源代码中处理更改产品和功能名称的好策略是什么。这是我一遍又一遍地发现自己的情况(你们大多数人都可以联系起来?)......

  1. 产品名称以“DaBomb”
  2. 开头
  3. 主要特色是“爆炸”,“灯笼”和“旗帜”。
  4. 时间过去了,功能名称更改为“Boom”,“Lighthouse”和“MarkMan”
  5. 时间过去了,产品名称变为“DaChronic”
  6. ...
  7. ...
  8. Blah,等等,等等......一遍又一遍
  9. 现在我们有一个庞大的代码库,在目录树和源文件周围散布着50个不同的名称,其中大部分已经过时了。只有退伍军人才能记住每个名字的含义,完整的历史记录等等。

    这个混乱的解决方案是什么?

    澄清:我不是指客户看到的名称,我指的是开发人员看到更改产品和功能名称的目录,源文件,类,变量等的名称被编织进去。

6 个答案:

答案 0 :(得分:6)

鉴于您的澄清,“您不是指客户看到的名称,[您]是指开发人员看到的目录,源文件,类,变量等的名称”,是的,这可能是令人讨厌的问题

当我们有一个总是只为代码库中的每个东西使用一个名称的策略时,我所处的团队的方式已经得到了最好的应对。如果名称稍后更改,我们将保留代码中的旧名称,或者将旧名称的所有实例迁移到新名称。 重要的是永远不要在代码中开始使用新名称,除非迁移了旧名称的所有实例。这样你只需要为头脑中的某些东西保留2个名字:“旧名“,在代码中使用,以及其他人使用的名称。

如果我们知道“品牌名称”可能会发生变化,我们也经常在开始时选择一个非常通用/描述性的名称。

答案 1 :(得分:4)

我认为重命名为更好的命名约定只是另一种形式的重构。创建分支,执行重命名,运行单元/集成测试,提交,合并,重复。所有这些都与过程控制有关,以保持项目的一致性。

答案 2 :(得分:4)

混乱的解决方案是首先不创造它。一旦命名了代码路径,就很少有理由对其进行更改,并且永远不会将旧名称与旧名称一起使用。当“Exploder”成为“Boom”时,你有两个选择:要么一直使用Exploder,也不要在任何地方提到Boom,要么将Exploder的所有实例更改为Boom然后继续专门使用Boom而不再提及Exploder。

如果你在相同的代码库中同时使用Exploder和Boom,那你就错了。

此外,我知道你澄清说你不是在谈论用户可见的名字,但是,如果你开始使用你自己的内部名称,这些名称与代码的作用有关,并且完全独立于营销需要的内容。调用产品/功能,这不太可能成为一个问题。如果您已经在内部将Exploder称为TNT,那么如果将Exploder更改为Boom,它会有什么不同?

答案 3 :(得分:0)

您如何处理本地化?一样;同样的方法。

答案 4 :(得分:0)

我们使用内部和外部名称。它可以像静态变量定义一样简单,如

public static final String EXPLODER = "Boom";

在代码中,您将始终使用对EXPLODER的引用。对于路径名称等也是如此 - 无论如何,在不同位置对这些路径进行硬编码是不可取的。如果有些人开始挖掘内部资料(比如JS资源或ini文件或其他东西),谁会关心他们是否发现了Exploder?

答案 5 :(得分:0)

只需使用内部名称,并忽略对营销/官方名称的更改:https://softwareengineering.stackexchange.com/a/208578/55472