我很抱歉,但我无法定义我想弄清楚的“事情”。
在编写函数时我们可以采用不同的方法,我已经做了一些“占位符”示例:
--------A---------
getImageSmall();
getImageLarge();
getTextSmall();
getTextLarge();
--------B---------
getImage('small');
getImage('large');
getText('small');
getText('large');
--------C---------
get('image','small');
get('image','large');
get('text','small');
get('text','large');
--------D---------
get(array('type'=>'image','size'=>'small'));
get(array('type'=>'image','size'=>'large'));
get(array('type'=>'text','size'=>'small'));
get(array('type'=>'text','size'=>'large'));
--------E---------
get('{"type":"image","size"=>"small"}');
get('{"type":"image","size"=>"large"}');
get('{"type":"text","size"=>"small"}');
get('{"type":"text","size"=>"large"}');
我也可以包含对象,但我现在更喜欢保持简单。
“D”中的数组是一个php数组,用于显示使用json的示例“E”之间的区别。
您可能会看到这种方法如何逐渐从一种思维方式转变为另一种方式,其中功能定义转向信息交换。 这并不意味着“get”函数是执行所有操作的主函数,它可能是调用其他函数的信使函数,其唯一目的可能是将应用程序转换为服务。
欢迎澄清和评论/问题/答案,以改善这个问题。
答案 0 :(得分:2)
命名函数和将值传递给函数一直是讨论的众多主题之一。我建议你看一下通常所说的“清洁代码”。它包含命名和构造函数的理论。 这是一本好看的书
http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
并查看YouTube以查找清洁代码,您可能会找到一些很好的会谈。
我的想法是,在构造函数时,您可以使用百万不同的方式。理论上,除了你的例子之外,你还可以使用一个名为 Get 的函数,它接受一个指向函数的指针,该函数返回要获取的东西的类型。但唯一增加的是复杂性。我们想要实现的基本上是自我评论代码,方便其他人阅读和理解。为此,每个函数都应遵循有关如何根据其执行的内容,允许更改和返回的内容来设置规则的设置规则。这样可以使代码更容易进入。
这适用于课程。没有一些类在它的构造函数中设置了一百万个东西。如果需要,则创建函数以封装行为并从构造函数中调用这些函数。
答案 1 :(得分:1)
在您编辑完问题后,我明白了您的目标。我将发布这个作为答案并冒险投票 - 我可能稍后编辑它。
好像你正在尝试通过你的函数构建路由层次结构;类似于Web API,甚至是MVC应用程序中的路由。你正在构建一个树,基本上 - 在它的根目录,你有get
(这是函数名),然后你可以将参数传递给那个可能相互依赖的函数。
沿着逻辑边界推广API调用确实是一种不同的编码风格,但我不知道它是否适用于您选择的语言。
编程风格的这种转变叫做什么? (主要问题)
我不确定,但我会尝试找到并重新编辑这篇文章。
什么时候最好使用哪个?
您的功能在列表中变得更加通用。因此,我会在特定范围内使用更具体的函数(例如,作为类中的帮助程序),并且我只将通用函数公开为更大的公共接口的一部分。
我可以在哪里阅读更多相关信息?
我必须自己做一些阅读 - 我理解这个概念,但我不知道我是否看过正式的定义。
答案 2 :(得分:0)
C和D / E之间的区别根本不会影响函数的逻辑,只是你调用它的方式。我使用C来实现更简单的功能,并在几种情况下切换到D和E:
参数列表足够长,调用和定义很难处理。通过关联数组可以逐个构建参数。
您希望作为参数传递的值已经在数组或对象中传递给您,因此传递它比首先解压缩更方便。
您的函数有很多可选参数。 PHP不支持命名参数,所以如果你想调用一个有15个可选参数并且你提供5的函数,那么传递一个参数数组要比记住你的5个参数中的15个位置中的哪一个要容易得多。 ,并在它们之间写了很多null
个。
对于需要少量全部或大部分必需参数的函数,C可能很有用,因为它使代码的其他读者更容易一目了然地查看函数的设计及其要求。