Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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
C# 迷失在代码中,是否存在比创建区域更好的方法?_C# - Fatal编程技术网

C# 迷失在代码中,是否存在比创建区域更好的方法?

C# 迷失在代码中,是否存在比创建区域更好的方法?,c#,C#,我使用的是Visual c#2010快速版 我有将近1500行有效的代码,并且经常使用区域,但它正在失控,我如何更好地组织或直接显示方法,而不必单击设计表单 编辑:我读过关于这个(映射依赖项)的文章,但它是针对visual studio 2013的,从来没有听说过类似的东西如果一个文件中有很多代码,我通常使用注释,只需按ctrl-f键即可找到我要找的内容,或者在适用的情况下,我将内容分解为类文件这是个人偏好的一部分,但可以使用ctrl+m键,CTRL+L组合键可折叠/展开所有内容,使内容更紧凑

我使用的是Visual c#2010快速版

我有将近1500行有效的代码,并且经常使用区域,但它正在失控,我如何更好地组织或直接显示方法,而不必单击设计表单


编辑:我读过关于这个(映射依赖项)的文章,但它是针对visual studio 2013的,从来没有听说过类似的东西

如果一个文件中有很多代码,我通常使用注释,只需按ctrl-f键即可找到我要找的内容,或者在适用的情况下,我将内容分解为类文件

这是个人偏好的一部分,但可以使用ctrl+m键,CTRL+L组合键可折叠/展开所有内容,使内容更紧凑

或者,通过选择器(编辑器窗口的右上方),您可以直接转到一个方法


或者(再次),好的旧
转到定义
(F12)

尽量不要在单个文件中保存太多内容。地区是很好的,但最好避免使用它们。关于“文件/类中的最大行数”有很多教条,但您需要知道的是,如果文件开始令人讨厌地阅读,您需要尝试将其拆分:)

始终尝试根据类的功能来描述和命名它们。例如,您可能有一个ScientificCalculator类。当您开始添加功能时,您开始注意到相关功能的组。一旦它们超越了2-3个函数,就把它们转移到新的类中去

因此,您的ScientificCalculator类现在可能指的是较小的类,如基本运算、三角运算、对数运算等。。。你明白了


这样做有很多好处,包括但不限于,可以轻松找到代码的方法。哦,你想修改Sine()函数吗?你知道该去哪里找-三角运算课!从长远来看,这是一个更令人愉快的经历。

整个项目中有1500行代码吗?还是一节课1500行?或者(更糟的是)用一种方法

对于一个给定的项目来说,1500行并不是那么糟糕,前提是您已经在逻辑上分解了依赖关系。一节课1500英镑可能比你想管理的要多得多

在编写课程时,请记住课程的职责。这对你有多大影响?所有方法是否与单一责任相关?它是否混合了逻辑和数据库交互之类的东西?它是否混合了表示逻辑和业务逻辑

如果一个方法有1500行代码,那么

此外,请记住,此响应中的所有内容都应以“一般”开头-任何人都不能在未实际看到代码的情况下对代码做出严格的规定性陈述,而且总会有特殊情况


最后,如果重构成单独的类现在看起来是一项巨大的工作,请记住,随着项目的规模和复杂性的增加,重构只会变得越来越困难。

这里有一个技巧比其他技巧更具争议性

我假设代码不是由您直接控制的,比如说您继承而不是设计的一组遗留库或网站。。。如果不是这样,那么还有其他人已经建议的更好的选择(干燥、封装、重构等)。然而,过去对我有效的一个权宜之计是利用分部类

-----SuperBigClass.cs----- 类超大类{ 公开无效方法a(){ }

..可以分为几个较小的文件

-----SuperBigClass - Methods A through Z .cs -----
public partial SuperBigClass {

  public void MethodA(){
  }

  ...

  public void MethodZ(){
  }
}

-----SuperBigClass - MethodZZTop.cs -----
public partial SuperBigClass {

  public void MethodZZTop(){
  }

}
只要术语partial应用于所有类文件的类定义,并且所有类定义都在同一命名空间中,这就可以正常工作。以下是有关详细信息的链接:


同样……最好的方法是干涸代码、封装、重构等等……但有时当你跳入一个遗留应用程序,需要在不进行任何功能更改的情况下重新构造文件时,这种快捷方式(当然是无意中使用了分部类语法)可以有助于剪切大文件并帮助理解事物。

欢迎使用编程一个好主意可以使你的应用程序更模块化。使用更多类或添加扩展方法将其拆分。检查你重复的代码是否可以放入一个方法中。1500?pfffft…稍等。遵循坚实的原则,分离你的关注点rns(UI与业务逻辑),不要重复你自己,重构直到你放弃。这些会让你找到不是超级单片的方法和类。@CésarAmorim:重构你的代码以使用类实际上会降低复杂性和可维护性。这正是我一直在使用的,无论如何,谢谢。。ctrl m ctrl l非常有用,谢谢,我没有编辑器窗口无论如何,它不是我可以展示的,它只有属性/解决方案资源管理器@AlexI我找到了它,它是一个很小的baryes主类实际上管理逻辑,一些数据库交互等等。但是我一直在设法让它完美地工作,但我不知道我还能忍受多少。我不是真的很困惑为什么会有争议?一些开发人员不喜欢使用分部来拆分类,并坚持认为有更好的重构方法。确实有。然而,在现实世界中,我们开发人员并不总是有几周的时间来重构某些东西。概述的分部方法可以帮助以较低的成本组织代码但这并不是它自身的终结。
-----SuperBigClass - Methods A through Z .cs -----
public partial SuperBigClass {

  public void MethodA(){
  }

  ...

  public void MethodZ(){
  }
}

-----SuperBigClass - MethodZZTop.cs -----
public partial SuperBigClass {

  public void MethodZZTop(){
  }

}