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

Version control 如何处理源代码中功能和产品名称的更改?,version-control,coding-style,naming-conventions,naming,Version Control,Coding Style,Naming Conventions,Naming,在源代码中处理更改产品和功能名称的好策略是什么。这是我一次又一次地发现自己所处的情况(你们大多数人都能理解?) 产品名称以“DaBomb”开头 主要特点是“爆炸器”、“灯笼”和“旗帜” 随着时间的推移,功能名称更改为“Boom”、“Lighthouse”和“MarkMan” 时间流逝,产品名称更改为“DaChronic” 废话,废话,废话…一遍又一遍 现在我们有了一个庞大的代码库,在目录树和源文件周围散布了50个不同的名称,其中大多数都是过时的。只有退伍军人才记得每个名字的含义,完整的病因史

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

  • 产品名称以“DaBomb”开头
  • 主要特点是“爆炸器”、“灯笼”和“旗帜”
  • 随着时间的推移,功能名称更改为“Boom”、“Lighthouse”和“MarkMan”
  • 时间流逝,产品名称更改为“DaChronic”
  • 废话,废话,废话…一遍又一遍
  • 现在我们有了一个庞大的代码库,在目录树和源文件周围散布了50个不同的名称,其中大多数都是过时的。只有退伍军人才记得每个名字的含义,完整的病因史等等

    解决这一混乱局面的办法是什么


    澄清:我不是指客户看到的名称,我是指开发人员看到的目录、源文件、类、变量等的名称,这些名称将不断变化的产品和功能名称融入其中。

    如何处理本地化?同样的事情;同样的方法。

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

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

    当我们有一个策略,总是在代码库中的每件事情只使用一个名称时,我所在的团队处理得最好。如果名称以后更改,我们要么保留代码中的旧名称,要么将旧名称的所有实例迁移到新名称重要的是,除非旧名称的所有实例都已迁移,否则永远不要在代码中使用新名称。这样,您只需在头脑中保留两个名称:代码中使用的“旧名称”和其他人使用的名称


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

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

    public static final String EXPLODER = "Boom";
    

    在代码中,您将始终使用EXPLODER的引用。路径名和类似的东西也是一样——在不同的地方硬编码这些路径是不可能的。如果一些人开始挖掘内部的东西(比如JS源代码或ini文件或其他什么),谁会在乎他们是否发现了Exploder?

    解决这个问题的方法是首先不要创建它。一旦命名了代码路径,就很少有好的理由对其进行更改,也从来没有好的理由在旧名称旁边使用新名称。当“爆炸器”变为“爆炸器”时,您有两个选择:要么继续以独占方式使用爆炸器,在任何地方都不要提及爆炸器;要么将爆炸器的所有实例更改为爆炸器,然后继续以独占方式使用爆炸器,再也不要提及爆炸器

    如果在同一个代码库中同时使用Explorder和Boom,那么就错了


    此外,我知道您澄清了您不是在谈论用户可见的名称,但是,如果您开始使用自己的内部名称,这些名称与代码的功能相关,并且完全独立于营销部门希望对产品/功能的称呼,那么这就不太可能成为问题。如果您已经在内部将Explorer称为TNT,那么如果Explorer改为Boom会有什么区别呢?

    只需使用内部名称,忽略对营销/官方名称的更改:。

    为了澄清,我不是指客户看到的名称,我指的是目录、源文件、类、变量的名称,开发人员看到的。啊,在这种情况下,你只能接受它。我认为这几乎是标准做法。