Ale*_*ell 5 c# class-design declaration definition
C#中的类定义和实现是否有类似于C++中的概念?
我更喜欢通过删除大多数(如果不是每个)实现细节来保持我的类定义简单(这取决于您可能知道的几个因素,但通常我会将大多数成员实现细节留在类定义之外).这样可以让我对鸟类及其功能有一个鸟瞰图.
但是在C#中,我似乎不得不在声明时定义我的成员函数.这可以避免,或绕过某种方式吗?
在我学习C#的过程中,这是困扰我的一个方面.课程,特别是复杂课程,越来越难以阅读.
如果您使用的是Visual Studio,则可以利用类视图.您还可以使用源代码编辑器的展开/折叠功能.
在不可能的情况下,您的工具无法提供帮助,您可以随时编写一个快速实用程序,为您总结课程.
如果已编译该类,则也可以使用Reflector查看该类.
不,你在C/C++中找不到C#中的实现和头文件的概念.您最接近的是使用界面,但界面只能定义您的类的公共成员.然后,您将最终得到类和接口的1对1映射,这实际上并不是接口的使用方式.
这真的是需要退一步看大局的情况.Visual Studio有许多工具可以帮助您编写和操作代码,包括大纲,#region,类视图,类图,代码定义窗口等等.
C#不是C++,如果你试图这样做,那么你将绊倒自己,没有其他人能够阅读你的代码.
学习使用Visual Studio工具的一天将在生产力方面多次回报投资,你很快就会想到你是如何使用C++的做事方式的.
我早就停止了将我的代码视为简单的文本文件.我认为代码是一种有机的东西,我发现允许自己依赖功能丰富的IDE可以让我更容易地上下移动抽象层次,并且不断提高我的工作效率.我想这可能是个人特质,也许并不适合所有人; 我有一个非常'视觉'的头脑,当我能看到图片中的东西时,我工作得最好.
也就是说,一个聪明的IDE不是穷人风格的借口.编写"干净代码"的最佳实践不需要智能IDE.清洁代码的原则之一是保持对其使用的定义,我认为可以扩展到包含声明和定义.就个人而言,我认为将声明和定义分开会使代码不那么清晰.如果你发现你得到了难以理解的怪物类,那么这可能表明你违反了单一责任原则.
在c/C++中单独定义和声明的原因是因为C++使用单通道编译器,其中前向引用无法在以后解析,这与C#及其两遍编译器不同,无论声明顺序如何,它都可以愉快地找到引用.这种差异源于编译器的不同设计哲学:C/C++认为每个源文件都是编译单元,而在C#中,整个项目被认为是编译单元.我想当你习惯于以C/C++方式工作时,将声明和定义分开似乎是一种理想的风格元素,但我个人认为保持声明和使用(或者在这种情况下声明和定义)会增强,而不是降低,可读性.我曾经是一名C程序员,直到2001年我开始使用C#.我一直很喜欢C,并认为做事的方式是'蜜蜂膝盖'.这些天,当我阅读C/C++代码时,我认为它看起来非常可怕,我无法相信我们过去常常忍受这种方式.我想,这都是你习惯的问题.