Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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
Class 课堂设计&x2014;每个文件一个类,还是将几个类与其接口分组?_Class - Fatal编程技术网

Class 课堂设计&x2014;每个文件一个类,还是将几个类与其接口分组?

Class 课堂设计&x2014;每个文件一个类,还是将几个类与其接口分组?,class,Class,一个关于课堂设计的快速问题。我对软件开发相当陌生,不知道人们是如何组织他们的课程的 我的意思是,举例来说,如果你有一个接口和一些继承该接口的小类,你会把它们全部分组到一个源文件中,还是将它们拆分,每个文件有一个类 谢谢。我想每个文件上一节课。如果实现接口的类都具有公共访问权限,Java将需要这样的东西。我别无选择。只有当它们都是包私有时,我才能将它们全部放在同一个文件中。对我来说,这取决于事物的大小。如果每个子类都有一个大型复杂的实现,那么我会将它们放在不同的源文件中。然而,如果子类很琐碎,并且

一个关于课堂设计的快速问题。我对软件开发相当陌生,不知道人们是如何组织他们的课程的

我的意思是,举例来说,如果你有一个接口和一些继承该接口的小类,你会把它们全部分组到一个源文件中,还是将它们拆分,每个文件有一个类


谢谢。

我想每个文件上一节课。如果实现接口的类都具有公共访问权限,Java将需要这样的东西。我别无选择。只有当它们都是包私有时,我才能将它们全部放在同一个文件中。

对我来说,这取决于事物的大小。如果每个子类都有一个大型复杂的实现,那么我会将它们放在不同的源文件中。然而,如果子类很琐碎,并且通常都在同一代码中使用,那么对所有相关人员(编码人员和未来的维护程序员)来说,分割它们确实是一种痛苦

这是介于这两个极端之间的情况,你必须做出判断。就我个人而言,我喜欢错误地将他们分开


如果你把它们都放在同一个源文件中,请小心命名,这样你可怜的维护技术人员就可以找到东西。我通常会将它们都放在一个名称空间中,并将源文件命名为与名称空间相同的名称。一个好的名称是任何你可能会被诱惑放在每个子类名称中的东西。

根据所使用的语言,你可能无法使用单个文件。例如,Java就是这样

每个类使用一个文件是正确的方法,因为它在文件组织和类设计之间提供了一个共同点,这有助于管理源代码


不要忘记使用父类,因为类之间有共同的源代码。

有时这取决于您使用的语言。例如,在Java中,不能在一个文件中放置多个公共类(因为Java中的文件基本上是“类”)。如果您允许使用该语言,您可能需要考虑文件级封装(例如,Python中的模块可能包含许多类),并将许多类放在一个模块中。在这种情况下,大小和复杂性确实很重要,因为将复杂代码放在单独的文件中更方便。

我总是按每个文件一个类来划分,即使类很小。随着时间的推移,这些类可能会变得越来越大,因此这是保持代码井然有序的一个有机步骤。

在.Net中,我总是将类、接口等放在单独的文件中(这是重构工具的轻而易举之处)。这使得在项目列表中查找它们变得更容易(没有类嵌入在奇数个命名错误的文件中),并且IDE中的导航也很简单

同样,通过这种方式,随着类的扩展,或者在某些情况下,新类的涌现,我不会以包含较小类的大型Franken文件结束,这些类与现在可能不相关的类一起嵌入。还可以更轻松地查看源代码管理中的变更集,因为我可以扫描名称以查看所做的操作,而不必自己翻阅文件


最后,可以更轻松地将类/接口拆分为单独的程序集以供重用,而无需拆分类文件。

一般来说,将此类类放置到一个名称空间是一种很好的做法,不同文件之间的分布取决于语言。在Java中,将它们放在一个包(即目录)中,但将它们放在一个文件中(例如,作为内部类)是一种不好的做法。在C#中,如果类不太大也不太复杂,则可以将它们放在一个文件中。我猜C++采用了相同的方法。
当然,不要忘记类的语义。如果您的类有不同的含义,请将它们放在不同的文件中

你能问这样的问题很好,但我认为这并不重要,我认为一开始你应该在设计上投入一些时间,但确保你不会被这类问题困扰,首先让你的程序运行,然后思考..

给Java的朋友们一个提示:Java强制每个类使用一个文件并没有本质上的错误。但是,不要把你的语言为自己的便利所做的事情误认为是“一种真正正确的做事方式”。当C++ VANBOIIS这样的时候,我真的很讨厌。不要像他们一样。如果你对几个类有相同的代码,那么将公共函数放在单独的类中,然后从每个类中聚合它可能会更有用(请参见GoF的介绍)。@ffriend-将这样的公共函数放在基类中难道不是eaiser吗?@t.E.D.-只有在它使用大多数基类函数的情况下。否则,聚合该类和复制所需的方法就更容易了——它将解耦类,这是一种更灵活、更健壮的解决方案。例如,如果你需要改变一个孩子的接口,你不能破坏层次结构。好吧,在某个时候,他可能会让它工作,然后将决定如何组织代码。这似乎是一个合理的问题。我认为我现在处于一个阶段,我对实际的“让事情运行”方面相当满意,我对如何最好地构建代码越来越感兴趣,特别是我正在尝试学习设计模式,然后根据需要应用。我不仅希望代码能够正常工作,我还希望它能够为下一个可能需要处理代码的人进行管理和维护。