【问题标题】:.Net is increasing my development time - am I missing something?.Net 正在增加我的开发时间——我错过了什么吗?
【发布时间】:2009-04-23 00:00:35
【问题描述】:

我最近开始玩 C#,但我发现它非常令人沮丧。似乎每次我想添加我认为简单的控件时,我最终要么在互联网上搜索,要么自己编写。我只是觉得我花了更多时间重新创建控件以使它们以应有的方式工作,而实际创建应用程序的时间更少。

例如:In another question,我问是否可以去除组合框上的边框;我认为应该将某些东西内置到控件中,但可惜我必须为这个简单的更改构建自己的控件。

是我对 C#/.net 太陌生,还是我期望太高?我知道 SO 喜欢 C#,所以不要因为这种感觉而咬我的头,只是帮助我了解我缺少什么以及我是否应该继续学习和使用 C#。

【问题讨论】:

  • 听起来您的 IDE 问题比 C# 语言更多。
  • 无论语言多么好,或者库多么全面和优雅,都需要时间来熟悉新事物。 .NET 肯定有不那么优雅的部分! WinForms 拖累了很多遗留的包袱,而 WebForms 是……最好不要谈论。也就是说,一旦你习惯了它,你可能会发现它非常好 - 给它时间......哦,不要咬你的头或任何东西,但这个问题有点主观/争论。
  • 与什么相比,C# 增加了开发时间?
  • 请告诉我什么比 C# 更有效率。自 2001 年以来我一直在使用 C#(在那之前的 C 和 C++),但我很想知道比 VS/C# 更高效的语言/环境。
  • 试图去除主观/争论的语气,投票重新开放。

标签: c# .net


【解决方案1】:

我今天花了 4 个多小时来追踪 C++ 程序中的 8 字节内存泄漏。涉及线程并且附加调试器会改变线程时间,所以我什至无法做一些简单的事情,比如打破第 N 个分配以查看泄漏在哪里。此外,我通常知道在哪两个事件之间分配了内存。不幸的是,两个线程都认为这是分配大量 8 字节大小对象的好时机。在调查结束时,我发现 COM 指针上的引用计数错误导致了泄漏。

不必为这样的调查而烦恼,这就是您应该转向 C# 的原因。

【讨论】:

    【解决方案2】:

    例如。在另一个问题中,我问是否可以删除组合框上的边框;我认为应该将某些东西内置到控件中,但可惜我必须为这个简单的更改构建自己的控件。

    当然,您不能删除组合框上的边框。它们是 Win32 控件,必须遵守 Win32 的规则。这包括让操作系统和用户,而不是应用程序控制样式。

    如果您想要一些可以在 Windows 上完全设置样式的东西,那么您需要查看 WPF。

    【讨论】:

      【解决方案3】:

      我认为你真正的意思是:

      .NET 上的 Windows 窗体正在增加我的开发时间 - 我错过了什么吗?

      我认为您 遗漏了几件事:

      • 思想开放 - 任何新的编程语言不仅会带来新的语法,还会带来新的范式。如果您来自 C++ 范例,例如垃圾收集,您可能听起来“过于自动化”,并且您希望拥有更多控制权,但可惜,您必须放手。每当你从一种范式跳到另一种范式时,先决条件始终是能够忘掉你一直都知道的东西。
      • Windows 控件与 Web 控件不同 - 我检查了您之前的问题,它们看起来像是来自 VBScript,这可能意味着您在 Office 或 ASP Classic 中使用它。话虽如此,当您在 Web 上时,您对易于想象的控件的需求对于 Windows 来说会更加严格——Windows 并非被设计为易于修改。这就是 WPF/Silverlight 诞生的原因。
      • 生产力是学习能力的函数 - 我说过了。这可能会造成伤害,但是,如果你的学习过程中被玩世不恭或敌意所阻碍,你就不会很快变得富有成效。如果您已经习惯了不必学习新事物,那么您也不会很快变得富有成效。如果您认为自己真的很擅长学习新事物,那么您会找到使用该语言提高工作效率的方法 - 然后我们可以讨论您的论点相对于开发时间的优点。

      【讨论】:

      • 你说得对,我的问题似乎出在 .net 上。至于你的第二点,我不做 Web 开发,我使用 VBScript 进行应用程序测试,所以我不处理控件。我在学习 C# 语言方面做得很好,只是控件缺乏设计让我感到沮丧。但我再次猜想那是 .net 的问题,我不应该在 C# 上解决它。
      【解决方案4】:

      对于任何新技术,一开始都有相当长的学习曲线,有些技术的学习曲线比其他技术要高。我认为随着您获得更多经验,您会发现这些事情变得更加容易。 C# 对 .Net 架构有很大的利用价值,但其中很多需要时间才能真正体会到。 C# 也在不断变化和发展,以允许新的编码风格(新版本融合了函数式编程的许多影响),使其既流行又强大。坚持下去,不断学习。

      【讨论】:

        【解决方案5】:

        您不是第一个,也不是最后一个有这种情绪的开发者。在我看来,每次我需要做一些不属于演示的事情时,我都必须花费数小时试图弄清楚如何完成一项小任务。我对 ASP.NET Web 控件感到沮丧。

        话虽如此,我发现一旦我克服了控制开发的(恕我直言)学习曲线,我的许多挫败感都消除了。我觉得使用继承和覆盖虚拟成员来创建新行为是一种非常干净的方法。另外,它创建的输出可以很容易地重用。在我看来,使用 OO 实践总是比到处粘贴 JavaScript sn-ps 更好。

        Microsoft 在提供许多开箱即用的基本控件方面做得很好,但每个应用程序似乎总是需要一些缺少的东西。我会建议学习控制开发,或者如果可能的话寻找第三方解决方案。许多公司的存在只是为了填补空白。无论哪种方式,我都不会根据默认控件集来判断整个语言。

        【讨论】:

          【解决方案6】:

          听起来你只是新手。问题不是 C#,而是 .net 框架。例如,如果您使用 VB.net,您可能会遇到同样的问题。

          当我从经典 ASP 转到 ASP.net 时,我遇到了这个问题。半年左右的时间里,我觉得我想在 ASP.net 中做的事情在经典 ASP 中要容易得多。最终那件事消失了。现在,当我尝试学习 ASP.net MVC 时,我将再次经历它。我在 ASP.net 中可以在 5 分钟内完成的事情,在 ASP.net MVC 中花费了我几天的时间。

          在您的情况下,听起来您正在使用 Windows 窗体。您之前是否使用过 winforms(即 VB6)?如果您想更好地控制样式,您可能需要查看 WPF。

          【讨论】:

            【解决方案7】:

            是的。你错过了一些东西——你正在使用的工具的经验。

            例如,几个月前,我决定我的下一个项目将使用 ASP.NET MVC。我从事 WebForms 已经好几年了,并且在几个个人应用程序中涉足了 RubyOnRails。 MVC 符合我提高应用程序可测试性的愿望,而且我更喜欢在大多数情况下编写自己的 HTML。

            尽管我有 ASP.NET、C# 和 RoR 中的 MVC 经验,但我仍然需要一段时间才能达到我使用 WebForms 的速度。我觉得我必须把所有的时间都花在寻找如何做事上。现在,几个月后,我觉得我能够像以前一样快速发展。更重要的是,我知道各种范式,并且在遇到与我之前解决过的问题类似的问题时可以轻松地应用它们。我还在构建一个可以反复重用的扩展、sn-ps 和组件的集合。

            我建议你给 C#/.NET 一个足够长的机会来克服不可避免的早期斗争,然后确定问题是否出在技术上。

            【讨论】:

            • 这正是我在使用 ASP.net MVC 时所经历的,但对我来说,我仍处于“在 MVC 中还不知道如何做到这一点”阶段。
            【解决方案8】:

            难道你试图做的不是,比如说,常见的?大多数 GUI 开发人员都遵循某种人机界面指南,以便他们的应用程序与所使用的操作系统的窗口管理器完美匹配。它有助于用户体验。大多数 GUI 元素的设计都考虑到了这一点。因此,您可能正试图使您的界面与大多数界面完全不同,因此发现您必须做一些自定义工作。这很正常。

            【讨论】:

            • 为什么每个人都认为移除控件的边框很奇怪,我在鼠标悬停或获得焦点时将边框放回去。当它周围有一个框时,它在这个表单上看起来很糟糕。
            • 我并不是要暗示它很奇怪,只是它可能不常见,因此没有内置支持。
            • 我可以理解如果我必须构建一个自定义控件,我对此没有任何问题。我只是不喜欢重建已经存在的东西。
            【解决方案9】:

            取决于你来自哪里。我发现 c# 非常有效。

            我很少使用其他控件,因为它们通常不能 100% 用于我的用例,并且它们会创建对您的应用程序的依赖项。

            所以当你想将你的项目升级到 c# 4 并且不能因为控制 X Y 和 Z 在 c# 4 中不起作用...你的 SOL。

            所以我只是先接受打击,然后编写自己的控件,从而减少以后的痛苦。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-10-25
              • 1970-01-01
              • 2017-12-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多