1

这是一个长期存在的问题,每次我开发时都会遇到。

我想它不是特定于 CodeIgniter 的,但是当我使用它时,我会在我的示例中考虑它。

首先,哪个更好:

function add_entry($data_array)
{
    //code to add entry
}

function edit_entry($data_array)
{
    //code to update entry
}

或者

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 个输入参数。

我错过了重点吗?我不想要重复的代码,而且当大部分功能非常相似时,我觉得这种“黑客”方法效果最好。

有人可以建议吗?

最后,我的管理功能是管理控制器中同一应用程序的一部分。我有一个管理模型,其中包含管理数据库交互的特定方法。但是,我使用“用户”模型中的一些模型功能。

例如,如果在管理页面上我需要获取数据库条目的详细信息,我可以加载用户模型来访问此功能。这没有什么错/不安全的..?正确的?

除了在我的管理模型本身中,我还需要获取有关用户数据库条目的数据,因此我直接从我的管理模型调用我的用户模型。这完全可以,但为什么呢?如果我需要数据并且我的用户模型中已经有一个方法可以获取它..重写管理模型中的代码似乎有点毫无意义但是每次调用该函数时它会再次加载整个用户模型吗?

非常感谢大家。

4

1 回答 1

1

按顺序,在模型中添加编辑与保存。就我个人而言,我在 MY_Model 中内置了一个保存,它可以根据传递的数据中是否存在主键来选择是保存还是编辑,所以显然我更喜欢这种方法,这意味着代码的重复次数要少得多,因为我可以使用在模型中根本没有函数的情况下保存任何表。

至于第二个问题,我认为这取决于情况。我还有许多函数,它们有大量的条件,具体取决于它们的用途和用途。在某些情况下,我发现这会使代码的易读性有点粗糙。如果您通过 if 语句运行它们,它也可能会影响性能。DRY 是一个概念,而不是规则,并且与其他设计概念一样,有时它们只是没有意义,就像数据库规范化一样,我个人认为过度规范化数据库并破坏性能和可用性非常容易。

最后,在管理代码中使用用户函数。我在这里根本看不到问题,反过来可能不是真的,但是仅仅因为它是一个“管理”功能而重写一个功能,当它与用户功能相同时是完全没有意义的。所以你是对的,这是浪费时间和空间。

于 2013-04-08T12:01:09.430 回答