我应该将类的构造函数名称大写吗?

发布于 2024-07-27 01:56:13 字数 237 浏览 3 评论 0原文

我使用驼峰式大小写,所有变量名、函数等的首字母都是小写的。 但类名是大写的。 我应该使用:

class Foo
{
   function foo()
   {

   }   
}

或:

class Foo
{
   function Foo()
   {

   }   
}

哪个是更好的约定? 我很困惑。

I use camel case which has the first letter of all variable names, functions, etc lowercased. But the class names are capitalized. Should I use:

class Foo
{
   function foo()
   {

   }   
}

or :

class Foo
{
   function Foo()
   {

   }   
}

Which is a better convention? I'm confused.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

败给现实 2024-08-03 01:56:13

命名构造函数符合 PHP 4 约定。 是的,当你这样做时,你应该与班级的情况相匹配。

但 PHP 4 如今已经是旧闻了。 PHP 5 已经成为事实上的版本好几年了。 PHP 5 使用常量构造函数名称 __construct。 无论班级名称如何,总是这样。

class a
{
  public function __construct()
  {}
}

class b
{
  public function __construct()
  {}
}

Named constructors are PHP 4 convention. And yes, when you do it that way you should match the case of the class.

But PHP 4 is old news these days. PHP 5 has been the de-facto version for several years now. And PHP 5 uses a constant constructor name, __construct. It's always this, regardless of the class' name.

class a
{
  public function __construct()
  {}
}

class b
{
  public function __construct()
  {}
}
临风闻羌笛 2024-08-03 01:56:13

老实说,都不是。

您应该使用 __construct() 当然,除非您被束缚在相当古老的 PHP4 上,否则您就完全匹配类的名称。

Honestly, neither.

You should be using __construct() Unless, of course, you're chained to the rather archaic PHP4, then you exactly match the name of the class.

穿透光 2024-08-03 01:56:13

构造函数名称应与类名称匹配,例如 Foo。 这就是惯例,不仅在 PHP 中如此,而且在它所复制的语言中也是如此:Java、C# 和 C++。 在这些语言中,标识符区分大小写,因此名称​​必须相同。

The constructor name should match the class name, so Foo. That's the convention, not only in PHP but in the languages it is copying: Java, C#, and C++. In those languages identifiers are case sensitive so the name must be identical.

谈下烟灰 2024-08-03 01:56:13

如果可能的话,我会选择第二个例子。 也就是说,构造函数的大小写应该与类名匹配,因为构造函数返回类的实例,因此它应该命名为相同的(为了一致性)。

这可能是个人约定,但如果我有一个类“FooBarBaz”,我希望构造函数被命名为“FooBarBaz”,而不是“fOOBARBAZ”、“fooBarBaz”、“foobarbaz”或其他任何名称。

但是,它与语言相关:

  • 某些语言区分大小写,因此它们会强制执行此行为,如果大小写不同,则会出错。
  • 有些语言不区分大小写并且不关心。
  • 我不确定,但某些语言可能会强制您以不同的方式命名构造函数(不确定编译器如何将其识别为构造函数,但这不是重点)。

If at all possible, I would go with the second example. That is, the constructor's case should match the class name, because the constructor is returning an instance of the class so it should be named the same (for consistency).

This may be personal convention, but if I have a class "FooBarBaz", I expect the constructor to be named "FooBarBaz", not "fOOBARBAZ", "fooBarBaz", "foobarbaz" or anything else.

However, it is language-dependent:

  • Some languages are case-sensitive, thus they force this behavior and will error out if the casing is different.
  • Some languages are case-insensitive and don't care.
  • I'm not sure, but some languages might force you to name the constructor differently (not sure how the compiler recognizes it as a constructor, but that's not the point).
潇烟暮雨 2024-08-03 01:56:13

尽管这是许多语言(例如 Java 或 C#)中的约定,但事实并非如此。

大写取决于开发环境中的语言或类库约定。

那么,我们在谈论什么语言呢?

好的,那么PHP。 PHP 中的惯例是类名大写。

Java 也使用大写类名,但类中的方法是驼峰式

C# 当然,使用大写的类名 会造成混乱,方法 也是如此。

Although this is the convention in many language, such as Java or C#, it is not so in all.

Capitalization is dependent on the language or class library conventions in your development context.

So, what language are we talking about?

Okay, so PHP. The convention in PHP is to Capitalize Class Names.

Java also uses Capitalized Class Names, but methods within a class are camelCased.

C# of course, confuses things by using Capitalized Class Names and the same for Methods.

空心↖ 2024-08-03 01:56:13

许多语言不给你选择的余地。 其中包括 C++、Java 和 C#。 构造函数的名称是类的名称,因此当且仅当类名称大写时,构造函数名称才大写。 (如果不这样做,编译器甚至不会将其识别为构造函数。)

对于其他语言,请使用与类的其余方法相同的命名约定。 就是这么简单。

Many languages don't give you a choice. That includes, C++, Java, and C#. The name of the constructor is the name of the class, so capitalize the constructor name if and only if you capitalized the class name. (If you don't, then the compiler won't even recognize it as a constructor anyway.)

For other languages, use the same naming convention you use for the rest of the class's methods. It's just that simple.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文