2009-06-30 45 views
0

我有一个大型系统,我已经编码,我希望使代码(我敢说)更简单易读。不幸的是,在此之前,我还没有使用过多的功能。PHP函数滥用?

我有很多不同的MySQL查询在我的代码中运行,我觉得如果我将各种显示放入函数中并将它们存储在单独的文件中,它会使代码更容易维护(实际上,我知道它将)。

我唯一想知道的是,如果这是一种常见的做法,并且如果您认为它在长期性能和其他因素方面会对我造成伤害。这里是我目前正在使用的一个例子:

$result = mysql_query("SELECT * FROM table"); 

while($row = mysql_fetch_array($result)){ 

/* Display code will go here */ 

} 

正如你可以想象,这可以得到冗长。我想制作,将采取结果变量,而做到这一点,然后返回结果,作为这么功能:

$result = mysql_query("SELECT * FROM table"); 

dsiplayinfo($result); 

你认为这是正确的方式去?

[编辑]

的功能将是非常不同的,因为它们中的每需要显示在不同的方式中的数据。在每种情况下都需要显示数据库的不同字段。你觉得即使有这个因素,这种方法仍然很好吗? AKA模块化设计尚未完全实现,但易于维护。

回答

1

使用更多功能可能会有所帮助,并且可能会造成伤害。从理论上讲,它使您更加注重模块化设计,这意味着您可以在多个应用程序中反复使用某个功能,而无需重新编写它。

我会诚实地鼓励你更多的去更大的公约,比如MVC Frameworks那里。 Kohana是一个伟大的。它使用Helpers等外部功能,Model来查询数据库,Controllers执行所有逻辑 - 并将最终结果传递给View,以HTML/CSS格式化,并使用Javascript进行调试。

0

是的,还可以考虑查看一个ORM或某个数据库不可知的接口。这可能也有助于减少重复(当然,如果有这种情况,也可以更容易地移植到新的数据库中)。

基本上任何时候当你看到类似的代码(无论是在结构上还是在功能上),你都有机会将它分解成可以在整个应用程序中共享的函数。一个好的经验法则是不要重复自己(DRY)

1
  • 请勿使用“SELECT *” - 列举出于性能原因以及维护原因而需要的字段。
  • 在您的示例中,显示代码可能与SQL查询非常紧密地结合在一起,因此您可以将它们封装在一起
  • 您可能会考虑某种带有ORM的MVC框架(如CakePHP),它将方便模型重用比编写一堆功能要好得多
  • 您正处在正确的轨道上!编写代码,然后重构它以使其更好 - 非常聪明。
3

你要记住的一件事是干的原则:不要重复自己。

如果您发现有多个代码块正在使用多次,或者是非常相似的可以做成相同的代码块,那么它是移入函数的理想候选者。