我正在使用CodeIgniter,並且我有一個取得模型讓我們說所有的食譜,你可以設置偏移量和限制。我是否應該擴展該功能以檢索單個配方?這是不錯的做法嗎?我是否應該實現多功能功能?
0
A
回答
2
您的目標應該是儘量減少代碼重複,同時最大限度地提高可理解性。這兩者往往不一致。您可以最終重複代碼最少,但有12個可選參數給函數。因此,一些常規提示:
- 考慮將通用功能打包到第三個函數中,然後這兩個函數都可以根據需要調用它;
- 如果函數的參數超過3-4個參數,則使用參數或參數數組;
- 代碼重複將被最小化,但不能完全消除。有時最明確的解決方案涉及一定量的代碼重複;
- 函數或對象的用途應該清楚。如果它根據參數完全改變,那麼你很可能會混淆人。
與您的特定情況下,我想你想要的東西,如落得:
function get_recipes($offset, $limit) {
// execute query and get resource
$ret = array();
while ($row = mysql_fetch_assoc($rs)) {
$ret[] = build_recipe($row);
}
return $ret;
}
function get_recipe($id) {
// execute query and get row object
return build_recipe($row);
}
function build_recipe($row) {
// construct a recipe object from the row
}
1
在一般情況下,爲了清楚起見,功能應該做一個單一的任務。但是,「獲得N行」是一項任務 - 即使在N == 1時也是如此。所以我會說這個箱子是合格的,即該功能並非真正的「多用途」!)
-1
答案很簡單。
只要記住,Worse is better
相關問題
- 1. 如何實現該功能?
- 2. 我應該在功能LUA
- 3. 實現「記住我」功能
- 4. 我應該在聚合物中實現通用功能?
- 5. 我應該用什麼來實現GWT中的列表功能
- 6. 我應該如何在rails中實現「cron」功能?
- 7. 我應該實現哪些功能來清理UINavigationController的視圖
- 8. 實現parallel_for_each功能
- 9. 實現`distrib`功能
- 10. 我是否應該在父/基類中存儲常見功能
- 11. 我們是否可以在google_cast中實現Miracast功能
- 12. 是否有我想要實現的本機功能?
- 13. 我在哪裏實現我的功能?
- 14. 是否有可能實現這個藍牙功能在iOS中
- 15. 是否可以描述一個不可能實現的功能?
- 16. 現有功能的組合是否具有新功能?
- 17. VSTO XML功能區 - 是否有一個功能區實例?
- 18. 功能是否快?
- 19. bash是否功能
- 20. 否定功能的功能
- 21. 如何實現多功能類
- 22. 如何實現「閱讀更多」功能
- 23. 實現「加載更多」功能
- 24. 如何實現多窗口功能?
- 25. 什麼時候應該使用無功功能,並且功能
- 26. 我該如何添加成功功能?
- 27. 我應該使用countif功能嗎?
- 28. 我的功能應該調用什麼?
- 29. 我應該從下面的功能
- 30. 我應該使用咖喱功能嗎?
其實我已經合併get_recipe和get_recipes。如果設置了id並且其他參數爲null,則它只返回一個字段等。可以嗎? – alimango 2009-09-02 02:15:29
我認爲這可能有點混亂,但很難說沒有具體細節。作爲一般規則,我更喜歡一種很像我所做的那樣具有明確命名功能的方案(儘管這三種方式可以命名得更好),它們使用功能分解來減少重複。 – cletus 2009-09-02 02:31:29
我同意cletus將'get_recipe'與'get_recipes'分開。維護你的代碼的人更容易理解你的代碼。 – Randell 2009-09-02 02:42:33