【问题标题】:singular or plural on models controllers?模型控制器上的单数还是复数?
【发布时间】:2010-02-04 22:54:28
【问题描述】:

如果我有线程模型和控制器。

模型和控制器应该是单数还是复数?

我可以显示一个线程,也可以列出线程。

不知道应该用什么。

$thread->get_lists(); // doesnt sound good
$threads->show(); // doesnt sound good

【问题讨论】:

    标签: php model-view-controller naming-conventions


    【解决方案1】:

    没关系

    我个人对模型使用单数,对控制器使用复数。

    然而,重要的是你选择一个方案并一致

    【讨论】:

    • 不记得了。通过 Twitter 或在我寻找缩小 CSS 和 JS 的多合一解决方案时偶然发现它。
    【解决方案2】:

    这取决于型号。如果该类的对象恰好代表一件事,请使用单数,如果它们代表许多事物,请使用复数(但您​​通常不需要这样的类,请使用数组/集合)。两者都不会发生,否则您应该重新设计 (1)。

    我将使用您的线程示例:

    如果每个对象都模拟一个线程,则将类命名为“Thread”。如果它一次建模多个线程,则将其称为“Threads”(或“ThreadCollection”等)。

    (1) 如果您同时需要单个线程的表示多个线程的表示,请使用两个不同的类(线程和线程)或创建一个数组或集合后者。然后你就会把它清理干净: $线程->显示(); $threads->list();

    【讨论】:

    • 我喜欢这个,因为在同一个类中同时处理列表和单个项目通常不是非常面向对象的。为什么?因为根据我的经验,这些类很少有任何状态,而只是函数的集合。
    【解决方案3】:

    KohanaPHP 很好地处理了它们的单数/复数 MVC 组件。我会检查它以供参考,因为它是有道理的。但归根结底,这真的无关紧要,这取决于程序员。我的意思是,如果您要获取一堆列表,请执行 get_lists(),或者如果您获取列表的内容,请使用 get_list()。

    【讨论】:

      【解决方案4】:

      就像其他人说的那样,没关系。

      关于模型,当类表示单行时,我喜欢使用单数,例如当使用 Active Record 或 Table Row Gateway 时,在使用表示表和记录集的类时使用复数,仅仅是因为我可以使这些返回或包含具有单数名称的类,并且我可以区分它们。但话又说回来,我也可以将它们命名为 UserTable、UserCollection 和 User。使用最能代表您的域的内容。

      一些框架有命名模型和控制器的约定,以实现一些自动化。例如,默认情况下,单数模型将被变形为使用复数表,因此您不必自己映射它。这称为convention over configuration;结束,因为通常您仍然可以根据需要进行配置。

      唯一一次我会说,如何命名模型和控制器并不重要,那就是使用 code convention

      【讨论】:

        【解决方案5】:

        我知道这是一个老问题,但是我最近与我的同事就这个问题进行了长时间的辩论。

        虽然我个人更喜欢控制器的单数,但同时绝对认为单数/复数应该无关紧要/强制执行...

        大多数众所周知的 API 都使用复数来表示控制器。这是一个很有可能结束辩论的论点

        例如 Twitter API Google plus API

        【讨论】:

          【解决方案6】:

          表数据库名,使用复数 示例 = “用户”

          控制器名称,使用单数和大写 示例 = “用户控制器”

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-11-28
            • 2012-02-09
            • 2013-10-12
            • 1970-01-01
            • 2014-01-12
            • 2012-06-02
            • 1970-01-01
            • 2016-01-25
            相关资源
            最近更新 更多