编程语言
首页 > 编程语言> > php – “Monolithic”页面类 – 这是代码味道吗?

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 patternstackle complexity in the heart of software.

标签:php,unit-testing,code-smell,private-methods
来源: https://codeday.me/bug/20190621/1257610.html