退出($ status)是否违反单一责任原则?

时间:2011-02-23 16:58:34

标签: php

关于退出构造的the PHP manual page说明:

  

exit - 输出消息并终止当前脚本

基于此,认为它违反了the single responsibility principle会不正确?

2 个答案:

答案 0 :(得分:5)

不,因为exit是一个过程语言构造,而不是任何类的成员函数。单一责任原则应该适用于面向对象的编程,这种编程不包含PHP语言的整个基础(只是其中的一部分)。

答案 1 :(得分:2)

技术上,是的。但是,确切的违规行为不是 坏......单一责任原则实际上是一个可以应用于任何代码单元的抽象原则。在Steve McConnell's Code Complete 2中,他实际上将此视为 cohesion 。在实践中,这是用于例程的单一责任原则的更具体形式。

根据他的最理想的凝聚力是功能凝聚力,其中一个例程只执行一个操作(他显示的例子是sin()getCustomerName(),{ {1}}等)。所以,eraseFile()做了两件事。因此它显示 Temporal cohesion (操作在同一例程中完成,因为它们是同时完成的。)

现在,exit()的原始参数是应用程序的返回状态(请参阅:linux exit status codes)。在C中,这是从exit($arg)返回的整数值。但由于PHP没有本机函数,因此将其添加到main()参数中。尝试一下,添加exit(),程序的返回值将是状态2(0通常是成功的,请参阅are there any standard linux exit status codes)。

但是,由于PHP进入门槛较低,大多数开发人员可能不会了解状态代码。所以,它被接受了一个字符串。如果参数是字符串,则 status 将在STDOUT上回显,然后应用程序终止。如果它是一个整数,它将从程序返回。所以这是一件神器。

现在,这是一个问题吗?并不是的。这是理想的吗?不,但它也不可怕,因为它们是相关的。最后,我不会因此失眠......