使用两种不同的CGI.pm编程风格和Perl有什么优缺点?

时间:2010-01-16 20:26:01

标签: perl cgi

我正在学校的Web脚本课程中,正在完成我的第一个任务。我倾向于过度开展事情并深入研究我的课程,而不是课程所要求的。现在我正在研究CGI.pm来做我的HTTP请求,它说CGI.pm有两种编程风格:

  • 面向对象的风格
  • 以功能为导向的风格

除非我忽略了明确的答案,或者我没有足够的知识从我在http://perldoc.perl.org/CGI.html提供的文件中辨别出自己的答案,我只是不知道使用这两种不同风格的利弊是什么。

说到使用两种不同风格的优点和缺点是什么?哪一个更常用?至于使用面向对象的样式,它说我当时只能使用一个CGI对象。那是为什么?

感谢您的帮助。你们都为我学习计算机科学非常愉快,满意和有益。 = d

2 个答案:

答案 0 :(得分:17)

在幕后,尽管风格各异,CGI.pm仍在做同样的事情。功能界面实际上使用了您看不到的秘密对象。

对于许多小规模的CGI项目,您可能永远不会一次需要多个CGI对象,因此功能界面很好。这可能是更常见的风格,但仅仅是因为大多数人为特定任务制作小脚本。如果你还有很多其他的东西,你可能不喜欢CGI.pm将一个长列表(并且很长)的函数名称导入到你的脚本中。某些函数名称可能与要导入的其他模块发生冲突。

但是,我总是使用面向对象的界面。我不必担心名称冲突,而且当你看到它的对象时,任何方法都显而易见。将对象作为参数传递给大型应用程序的其他部分等也很容易。

有些人可能会抱怨额外打字,但这对我来说从来都不是编程的慢节目。我已经做了很长一段时间的Perl,我不介意语法。但是,我只使用CGI来获取输入并可能发送输出。我不会搞乱任何HTML内容。

当它一次讨论一个CGI.pm对象时,它指的是对输入的访问。例如,一旦你读过STDIN,另一个CGI.pm对象将无法读取它。您可以拥有任意数量的对象。他们只是不会共享数据,第一个获取所有POST数据。

你实际上可以使用混合物。您可以导入一些内容,例如:html,但仍然使用OO界面来处理输入。

答案 1 :(得分:4)

我强烈建议使用对象界面。

您的课堂作业绝对需要吗?不,事实上即使是小型生产项目也可能有点过分。

但是,如果您认真学习使用CGI.pm进行大型项目,则需要学习对象方法。如果达到需要两个对象的程度,则必须使用对象接口。与其他大多数事物一样,编程通过练习变得更好。现在就相对容易的问题进行练习将有助于你为更复杂的问题做好准备。

事实上,我建议将其作为编程的一般规则(尽管有例外),如果面对使用特定工具的两种方法,习惯使用最有可能在生产代码中使用的工具和/或或者是更多问题空间的正确答案。