通过应用SRP原则,您必然会有很多课程。如果这对小项目工作正常,你如何处理和组织大型项目的课程数量?
答案 0 :(得分:5)
这适用于所有类型的库。不只是SRP。
课程/功能的组织可能很令人头疼,但实际上你需要记住的只有一些事情。
By 2我的意思是:/library/muscleGroup/useType_nameOfClass.php
用于文件/文件夹,其中useType类似于“factory”“abstract”“data / dto”或您正在使用的任何模式。然后,在每个文件中,类应该与nameOfClass完全相同,并且每个方法名称应严格遵循模式。 [Action][on what][with what conditions]
并保留一份行动清单和“最新情况”并严格遵守这些行为。
这样做,您无法复制功能,因为您可以轻松找到所需内容的正确类和方法。由于它们具有逻辑名称,例如Get_User_ById
和Get_Transactions_ByNewest
或Combine_Ingredients_FromRecipes
。
最后一个可能会在其上面发表评论,如:
// Combines many recipes into one ingredient list
// $recipes = an array of recipe objects
// returns an array of ingredient objects with their correct quantities
示例操作列表:(应该非常通用,适用于任何应用程序)
样本列表“On What”:(应该是特定于应用程序的)
答案 1 :(得分:3)
取决于项目,但如果它有很多没有太多实际业务规则的CRUD,我会选择一个简单的结构,脚本文件支持该决定。我过去做过这个,它速度超快,但变化缓慢。通常称为Eric Evans的Smart UI反模式:
“将所有业务逻辑放入 用户界面。切断申请 进入小功能和实施 它们作为单独的用户界面, 将业务规则嵌入到 他们。使用关系数据库作为 共享数据存储库。使用 最自动化的UI构建和可视化 编程工具可用[埃文斯 第77页]。“
如果您正在制作具有大量实际业务规则并且有更多时间的东西,或者您希望它具有较长的使用寿命:
至于可以进一步帮助您的资源,请查看Bob Martin的Clean Code和Eric Evans的域驱动设计(不能发布其他链接)。这两本书都很精彩,分别提供战术和战略步骤来解决这些混乱局面。
答案 2 :(得分:1)
Zend Framework按功能组织他们的类,并将其命名为。例如,课程Zend_Controller_Action_Helper_AjaxContext
位于/library/Zend/Controller/Action/Helper/AjaxContext.php
。
这有两个目的:文件夹组织和功能的逻辑分离。你总会遇到“记住你构建的东西”的问题,但是通过应用SRP并将功能置于逻辑上“最正确”的地方,你可以减少混乱。
在处理很多课程时,智能IDE至关重要。允许开发人员在项目中的任何位置快速查找类,文件名和方法的快捷方式使得处理数千个类几乎是微不足道的。
使用与上面相同的示例,应该能够以各种方式找到该类:
ctrl+shift+T
一样简单。 (注意:老实说,我不知道这是eclipse的功能还是PDT插件的补充)。ctrl+shift+R
(资源)按文件名查找。ctrl+shift+m