【问题标题】:What are the good programming practices in C# to make code more self-explanatory? [closed]C# 中有哪些良好的编程实践可以使代码更加不言自明? [关闭]
【发布时间】:2010-10-22 11:17:25
【问题描述】:

我认为使代码不言自明,不需要到处都是 cmets,这是一个很大的优势。但是您能否提出一些方法和技术来减少代码量,使其更具可读性和可理解性。

您认为减少大if statements 和嵌套for loops 以及其他有时乍一看难以理解的结构的好技术是什么。

以下是一些我认为会使我的 C# 应用程序更具可读性和不言自明的内容:

  • foreach 循环转换为 LINQ 声明。
  • 使用匿名函数减少事件处理程序的数量。

也将不胜感激有关涵盖这些主题的书籍的建议。

【问题讨论】:

    标签: c# .net coding-style


    【解决方案1】:

    我建议您看看 Robert C Martin 的 Clean Code。这是一本致力于编写可读代码的整本书。如果你问我,强烈推荐。

    Resharper 也非常有用,因为它有许多关于命名、减少嵌套等的建议。

    【讨论】:

    • 我一直在使用 Resharper,非常好用。我只是想知道为什么微软没有默认将大部分 Resharper 功能放在 VS 中。
    【解决方案2】:

    除了语法/结构方面的考虑之外,一致性非常重要 - 代码样式和格式偏好会有所不同,这很好,但在项目中,您应该尽可能标准化,以避免在阅读代码时不断调整自己.

    【讨论】:

      【解决方案3】:

      使用带有默认值的命名参数的方法可以帮助清除重载,这通常会导致更少的代码。我自己经常这样做。还使界面更易于阅读和使用。

      如果一个 foreach 或其他循环只说明循环项的内容而不是一般的方法,我经常将循环体重构为一个新方法。这使得第一种方法更易于阅读。

      反转 if 语句以减少嵌套通常可以使您的代码更易于阅读。

      if (!something) return;
      // more code here
      

      这样就去掉了括号和 1-2 行。

      如果方法变得太大,请将其重构为更小的方法。

      使方法和变量名称一目了然。

      【讨论】:

        【解决方案4】:

        使用描述性的变量和函数名称。

        将大函数分解为子函数,以便将属于一起的语句组合在一起,这有利于代码重用。

        尽量让函数保持扁平化,并将嵌套推送到单独的函数中,这样每个嵌套级别都可以获得自己的描述性函数名称。

        我尽量避免在同一个函数中嵌套多个 if 和 for。 如果您有一个包含大部件的 if,请尝试将这些部件重构为它们自己的功能。 这样 if 将更容易理解,任何解释都可以在真/假函数名称中。

        不要总是转换为 linq,大型 linq 语句通常比带有 if 结构和可能变量的普通循环更难阅读。

        对临时数据使用变量,而不是在语句周围包装语句。这既增强了可读性,让您有机会命名临时变量以进行解释,也使调试更容易,因为该行将精确定位一个确切的语句,而不是一个集合或嵌套语句。

        我从 Prentice Hall 读到了一本非常好的书,名为“清洁代码”,对此进行了更深入的探讨。

        【讨论】:

          【解决方案5】:

          对于可读代码,我选择的主要方法是变量名,使变量中的内容一目了然,而方法名则使方法的作用一目了然。

          如果你的 if 语句和 for 循环太大,那么将它们的内部重构为具有合理名称的新方法。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多