我的home.cs
表单中的代码数量是否存在限制或性能损失?
我正在Visual Studio 2008中用C#编写数据库应用程序前端。事情排队的方式,我使用标签页方式更改显示给最终用户的信息,而不是使用新表单。
来自VBA / MS Access,我记得如果你超过一定数量的代码行,它会产生错误而不能编译。 C#会在Visual Studio 2008中执行此操作,还是会受到性能影响?我知道代码可读性可能是一个问题,因为一切都在一个地方,但我也可以看到这在某些情况下是一个优势。
答案 0 :(得分:9)
您的.cs文件中的代码行不需要担心性能问题 - 它是运行时表单上可能导致问题的控件数量。如果它只是几个选项卡上的几个控件,你将没有问题。如果在很多选项卡上有数百个控件,那么您可能会遇到性能问题(更不用说可用性问题 - 我个人讨厌使用多行选项卡的选项卡控件)。
此外,如果UI的目的更像向导,您希望用户连续与所有选项卡进行交互,我认为选项卡不合适。选项卡用于向用户显示选项集,而无需一次查看所有选项。
最后,如果每个选项卡的用途明显不同,我发现将每个功能部分封装为一个单独的表单会更容易。使用选项卡,您至少可以将每个位封装为用户控件,然后让表单上的每个选项卡托管一个用户控件的实例。
答案 1 :(得分:3)
我预见的唯一问题是,将来它很难维持。
尝试尽可能地将主表单的逻辑分解为类,这样当你需要添加一些东西时,你实际上可以在没有合适的情况下完成它。
答案 2 :(得分:2)
如果您使用的是标签,您仍然可以创建自定义用户控件,以保存标签中的内容。对每个选项卡进行控制,然后您可以将不同选项卡的代码分开。 MSDN here上有一个演练。
在回复上面的评论时,如果没有显示标签,我会真的重新思考你是如何接近这一点的。为什么不简单地将所有用户控件放在主窗体上,必要时在Panel中将它们全部设置为Dock = DockStyle.Fill
,然后根据要显示的属性更改Visible和Enabled属性?你自己可能会比自己需要的更努力。
对评论的更多回复 - 您可能正在寻找像Java中的CardLayout这样的东西。可以找到GNU Classpath版本的源代码here,它可能会为您提供有关如何实现它的一些想法。
答案 3 :(得分:2)
“我知道代码可读性可能是一个问题,因为一切都在一个地方,但我也可以看到这在某些情况下是一个优势。”
根据我的经验,这种态度最终会让任何必须在未来维护您的代码的人非常头疼,因为模块化您的代码是一种公认的做法,以便可能发生变化的部分或服务明显不同的部分目的彼此分开。
话虽如此,我认为VS不会对文件的长度施加限制,但我认为随着文件变长,您会遇到一些严重令人沮丧的性能下降,尤其是在设计和代码视图。
我会敦促您保存未来的自我和他/她的理智,并将您的代码逻辑分解为单独的文件。你以后会感谢自己!
答案 4 :(得分:1)
这应该不是问题。
请记住良好的编码实践,并将代码模块化以提高可读性和可维护性。
另一方面,如果您在表单上放置了太多控件,那么加载可能需要更长时间。如果你想要一个活泼的界面,请考虑到你的设计。
答案 5 :(得分:0)
听起来很可怕,但我认为没有任何理由可以解决这个问题。
答案 6 :(得分:0)
我有一个表格,继承了我的新工作,有超过30,000行。它完全是癌症。在编码和模块化之前请先考虑一下!