在一个使用 CakePHP 开发的小团队中呆了 9 个月后,我们开始看到越来越多的模型变成 3000、4000 甚至 5000 行长。并不是说代码被重复了,而是我们添加了很多功能并且只需要这么多代码。
我知道与许多大型应用程序相比,这些文件可能不会被认为很大,我们当然会通过使用私有函数来降低可用调用的数量,但是如果我们想开始分解其中一些文件以增加可管理性,是否应遵循任何特定技术?
没有任何数据库表的模型是否违反了惯例?有没有更适合放置大块代码的地方?
提前感谢您的建议
如果不知道代码,就不可能正确回答这个问题。检查您的代码,是否重复相同的工作流程?你能把它抽象成一种行为吗?
只要代码确实属于模型,拥有 10k 线模型就没有错。经验法则:如果它操纵某些东西,它就会进入模型。
但我不建议使用很多私有方法,它们只会使测试(如果你进行单元测试 - 你应该这样做)更难,请参阅http://sebastian-bergmann.de/archives/881-Testing-Your -Privates.html。恕我直言,您使用它们的方式无论如何都是错误的,可见性范围并不是为了限制公共可调用方法的数量,而是为了避免人们扩展代码的关键部分。实际上应该没有太多私有方法,而那些私有的方法应该是私有的,这是有充分理由的。
我会质疑您的模型实际上是在对业务对象进行建模,还是对一些功能或流程进行建模。
对于许多控制器中可用的可重用代码块,我倾向于创建封装该部分业务逻辑的组件。
如果这无助于分解您的 5000 行庞然大物,那么我建议将其推入插件中。
您可以尝试查看所有内容并评估其相关性,以及该功能是否特定于该模型,或者是否可以被多个模型使用。如果您在将数据传递回控制器之前对数据进行大量处理以获取合适的格式(例如字符串格式、日期格式),则可以将一些处理放入存储通用函数的帮助文件中。