這是一個長期運行的問題,每次我開發時都會讓我感到困惑。CodeIgniter模型中的重複代碼在多大程度上可以使用?
我想這不是CodeIgniter特有的,但是當我使用它時,我會在我的示例中考慮它。
首先,這是更好的:
function add_entry($data_array)
{
//code to add entry
}
function edit_entry($data_array)
{
//code to update entry
}
OR
function save_changes($what,$data_array)
{
//if what == update update
//otherwise insert
}
都產生相同的作用,但是否真的不管你使用哪一個?
找到更復雜的東西。
我有一個頁面,我需要從數據庫中獲得一個條目。
我也有一個頁面,我需要從用戶指定列中排序的同一數據庫中獲取所有條目。
我的最終方法類似於
function($data_array,$order_by='',$limit='')
{
//get where $data_array
//if order_by!='' add order by
//if limit !='' add limit
}
當我開發我的應用程序,實現新的地方,我需要「相似」的數據庫功能我是什麼感覺就像黑客先前的方法,使他們一起工作的功能我所有的案例場景。這些方法最終包含大量的條件語句,並且在一些情況下變得相當複雜,有些情況下有4或5個輸入參數。
我錯過了這個觀點嗎?我不想要重複的代碼,當大部分功能非常類似時,我覺得這種「黑客」方法最適合。
有人可能會建議嗎?
最後,我的管理功能是管理控制器中同一應用程序的一部分。我有一個管理模型,其中包含管理數據庫交互的特定方法。然而,我使用'用戶'模型的一些模型功能。
FOr例如,如果在管理頁面上我需要獲取數據庫條目的詳細信息我可以加載用戶模型以訪問此功能。對此沒有任何錯誤/不安全感?對?
除了在我的管理模型本身中,我需要獲取有關用戶數據庫條目的數據,所以我直接從我的管理模型中調用我的用戶模型。這是嚴格的,但是爲什麼?如果我需要數據,並且在我的用戶模型中已經有了一個方法來獲取它......在管理模型中重寫代碼似乎沒有多大意義,但是每次調用該函數時都會再次加載整個用戶模型?
非常感謝。
一如既往:不要重複自己!爲什麼不把你的函數放在你的模型的基類或通用的DAO中? – 2013-04-08 12:03:05