我已经经历了几次这个过程,我发现解决方案需要了解以下内容:
- 解决这些问题的概念会引起政治动荡吗?
- 现在有一个公认的标准来说明这些东西的外观/格式吗?
- 有很好的测试用例吗?
政治局势是最难缓解的,基本上没有人喜欢横向移动的想法,并且执行代码格式和命名约定的过程在很大程度上是横向移动。如果你能拿出一套可靠的指标来证明你的决定是正确的,那么你的横向运动就可以被伪装成向前运动。我发现这里最好的指标是
“一套一致的编码标准将导致: - 减少 30% 的错误 - 30% 的开发速度 - 降低 80% 的维护成本 - 100% 的我们编码人员将更加高兴这一变化”
不仅仅是把这些数字从空中拉出来是诀窍。能够证明这一点。
显然,除非您从当前添加到项目中的人员那里购买,否则开始这项工作是没有意义的。每个人都必须同意并开始将这些理想重新安装到当前存在的代码中。请记住,不是每个人都使用 IDE(例如,我在 VIM 中编写所有 java 代码),因此您应该确保这种格式在 wiki 上规定所有人都可以看到(尤其是新团队成员),并且 wiki 页面有各种编辑器的下载正在使用。
由于我们很可能不仅在讨论代码格式,而且还讨论变量重命名和模式更改,这些都会影响您的类的公共 api,因此您确实需要确保您拥有一组非常稳定的测试用例。如果缺少测试用例,那么您应该始终从外部开始 - 为您的测试建模,以便它们像您的用户一样进行交互。然后你就可以带着一定的信心去经历和重构。一旦你的代码与你的梦想相似,你就可以进入并在每个对象附近添加测试。没有什么比创建所有测试用例、然后更改 API 并不得不更改所有测试用例更痛苦的了;每次我看到这种情况发生时,都会导致测试覆盖率大幅下降。