Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 一个程序员应该在一个文件中放入多少类?_Language Agnostic_Oop_File_Class - Fatal编程技术网

Language agnostic 一个程序员应该在一个文件中放入多少类?

Language agnostic 一个程序员应该在一个文件中放入多少类?,language-agnostic,oop,file,class,Language Agnostic,Oop,File,Class,在面向对象语言中,将类分组到单个文件时遵循哪些准则?你总是给每个班级一个单独的文件吗?你把紧密耦合的类放在一起了吗?您是否曾经在一个文件中指定过一个接口的两个实现?您是基于实现的代码行数还是类的用户认为实现“杂乱无章”的程度?还是用户更愿意把所有东西都放在一个地方?我认为我使用过的所有OO语言的最佳实践是在一个文件中包含一个类。我相信有些语言可能需要这一点,但我不确定这一事实。但是我想说的是,每个文件一个类,并且文件名与类名匹配(以及目录结构与包结构大部分匹配)是最佳实践。我个人建议每个文件一个

在面向对象语言中,将类分组到单个文件时遵循哪些准则?你总是给每个班级一个单独的文件吗?你把紧密耦合的类放在一起了吗?您是否曾经在一个文件中指定过一个接口的两个实现?您是基于实现的代码行数还是类的用户认为实现“杂乱无章”的程度?还是用户更愿意把所有东西都放在一个地方?

我认为我使用过的所有OO语言的最佳实践是在一个文件中包含一个类。我相信有些语言可能需要这一点,但我不确定这一事实。但是我想说的是,每个文件一个类,并且文件名与类名匹配(以及目录结构与包结构大部分匹配)是最佳实践。

我个人建议每个文件一个类,除非次要类是文件中主类的私有类。例如,C#中的嵌套类将保留在父类文件中,但在其他地方可能有用的实用程序类会被分解到它们自己的文件甚至命名空间中

关键是要了解你的环境以及人们在哪里寻找东西。如果有一个既定的方法,在你打乱它之前要仔细考虑。如果您的同事希望相关的、紧密绑定的类会出现在一个文档中,那么必须搜索它们可能会很烦人(尽管对于现代IDE来说这应该不是问题)


将内容分解为更多文件而不是更少文件的另一个原因是版本控制。如果您做了一个小的更改,它应该尽可能只更改一个小文件。如果您做了全面的更改,很明显会查看日志,因为所有受影响的文件(以及间接的类)都会被记录下来。

一个类=一个文件。总是。除了一个类=C#中的多个文件,或者一个类包含内部类等等(当然了)

每个文件一个是我们的标准。唯一的例外是,对于类及其类型集合,我们将它们放在一起


随着时间的推移,我开始意识到,“小班”总是在增长。然后你会想把它们分开,让团队中的其他人(和你自己)感到困惑。

如果类属于同一个文件,我会把它们放在同一个文件中,无论是出于技术上的还是美学上的原因。例如,在提供插件接口的应用程序中,类plugin(插件的基类)和PluginManager通常放在同一个文件中。但是,如果文件对我来说太大,我会将它们分割成单独的文件

我注意到目前我主要用Python编写代码,这影响了我的设计。Python在将内容划分为模块方面非常灵活,并且有很好的工具来管理内容的名称空间。例如,我通常将应用程序的所有代码放在Python模块中(一个包含
\uuuu init\uuuu.py
的目录),并让模块从子模块导入特定的名称。然后,API类似于
applib.PluginManager
,而不是
applib.pluginstuff.PluginManager


这使得移动东西变得很容易,这也让我在创建设计时不那么挑剔:我总是可以在以后修复东西。

我尝试为每个文件保留一个类(与上面大多数文件一样),除非它们是小类。如果有很多,我可能会把它们分成不同的主题。但通常我只是将它们保存在一个文件中,并在编辑器中进行代码折叠。对于我的私人黑客来说,这根本不值得我付出(最小的)努力。

没有必须始终遵守的硬性规定(除非特定语言强制执行)。一个文件中只有一个类或有多个类是有充分理由的。它确实取决于语言。

在C#和Java中,人们倾向于每个类使用一个文件

虽然我经常把多个类放在一个文件中,但是我会用C++来说明。这些课程通常都很小,而且关系密切。在某些通信协议中,每条消息对应一个类。在这种情况下,每个文件都有一个文件,这意味着有很多文件,并且实际上使代码的维护和读取比在一个文件中更加困难

在C++中,类的实现与类定义是分开的,因此每个类{//By/}都比其他语言小,这意味着类在一个文件中分组起来更方便。 在C++中,如果你正在编写一个库(例如标准模板库),你可以把所有的类放在一个文件中。用户只需要包含一个头文件,然后就可以得到所有的类,这样他们就更容易使用了


这是一种平衡。答案是最容易理解和维护的。默认情况下,每个文件有一个类是有意义的,但在很多情况下,如果在一个文件中定义了一组相关的类,则使用这些类更为实际。

每个文件有一个类似乎是标准。我通常也是这样做的


有几次我偏离了这一点。特别是当一个较小的类是另一个类的成员时。例如,在设计数据结构时,我可能会在与“bigstructure”类相同的文件中实现一个“node”类。

1 class=2个文件。安·h和a·c,你们这些孩子真幸运:)

在面向对象语言中,将类分组到单个文件时遵循哪些准则

视情况而定。在团队工作中,我努力遵循团队标准;在独奏作品中,我更倾向于随心所欲

在独奏作品中,然后

你总是给每个班级一个单独的文件吗?你把紧密耦合的类放在一起了吗?您是否曾经在一个文件中指定过一个接口的两个实现

没有,所以