2009-06-30 61 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

你要記住的一件事是乾的原則:不要重複自己。

如果您發現有多個代碼塊正在使用多次,或者是非常相似的可以做成相同的代碼塊,那麼它是移入函數的理想候選者。