php – “Monolithic”页面类 – 这是代码味道吗?
作者:互联网
我是PHP的新手,我正在尝试第一次构建一个站点而不使用框架(nb我对框架没有任何反对意见,我只是觉得我应该在学习框架之前从头开始学习代码.有点像学习JQuery之前学习Javascript).
我在概念上喜欢OOP,所以我从那里开始.我正在考虑使用catch all脚本来确定需要哪种页面类型,然后将(已消毒的)脚本输入传递给处理它的类,其中类是通用Page类的子类,其中包含处理事物的常用方法比如发送HTTP代码和“虚拟”显示方法来实际显示页面.
我的问题是,在页面类本身中发生这么多事情似乎是一种代码味道.显然,与数据库交谈,清理输入等等都会在不同的类中,但单个页面类似乎包含了确定所显示页面内容所需的所有内容.
另外,我有一个问题,说服自己在页面或其子项中是否需要非私有方法.我认为这是我思考的一个副作用,因为PHP是一种脚本语言.由于它是一个脚本,它是非交互式的,并且在脚本启动时确定输入数据(即POST和GET变量).似乎除了页面正在接收数据的其他对象之外,对页面没有外部影响,而不是提供它,除了构造函数之外,显然不需要公共方法,并且我觉得生成方法可以简单地从构造函数中调用.
我觉得这是一个有点防守的位置,除了我遇到this question这似乎表明私人方法不需要进行单元测试.在我的例子中,这将导致一个Page类只能通过一个“显示”方法进行单元测试,这对我来说肯定是错误的.
那么告诉我:我的设计有点可笑吗?我怎样才能将其重构为理智的东西?
解决方法:
Private methods are somewhat more difficult to unit-test和整体类通常是架构中缺少Separation of Concerns的指标.课程应该有distinct responsibility.将过多的责任归入一个班级通常会创建一个God Object.尝试遵循已建立的design patterns到tackle complexity in the heart of software.
标签:php,unit-testing,code-smell,private-methods 来源: https://codeday.me/bug/20190621/1257610.html