我目前正在开发两个有很多共同点但却截然不同的社交网站.我发现自己为这两个代码编写了很多相同的代码(包括UI),并且想知道是否存在限制重复代码的最佳实践.
其中一个主要问题是这些项目非常独立,并且可能很快就会出现类似的差异.此外,一旦完成初始工作,它们可能会被移交给其他程序员,因此共享代码库可能最终成为一个大问题.
那些可能不得不处理类似情况的人的任何建议?
PS:我是这两个项目中唯一的开发人员,看起来它会保持这种状态一段时间.
将共享功能抽象回具有已定义接口和默认实现的框架或库是处理此问题的常用方法.例如,如果您选择支持插件体系结构,那么您的插件体系结构可能可以在所有项目之间共享.大多数情况下,您要共享的内容是非常基本的功能或相对抽象的功能,可以轻松定制.前者更易于识别和分解为常见的库.后者有时可能比仅仅通过微小的更改(共享模式而不是代码)重新实现代码更多的工作.
您要注意的一件事是让实际的重用驱动公共库的设计,而不是提前提出共享架构.陷入框架设计并将其抽象出来供共享使用是非常诱人的.遗憾的是,您经常发现共享使用的开发或开发方向与您预期的方向不同,最终会重写或丢弃大部分框架 - 甚至更糟糕的是,保留和维护未使用的代码.让YAGNI(你不需要它)成为你的向导,并推迟对公共图书馆的重构,直到你真正有需要为止.