Architecture 创建干净优雅代码的技巧

Architecture 创建干净优雅代码的技巧,architecture,Architecture,对我来说,编写干净、优雅的代码是一种乐趣。我一直在寻找更多的方法来做到这一点。以下是我的一些策略: 将较大的代码块保存在较小的例程/方法/类块中 确保每个例行程序都有一个退出点。逻辑位于循环顶部的退出循环,而不是中断或某种类型的“退出循环”关键字 避免全球化 如果您刚刚对代码执行了复制/粘贴,那么现在是创建例程/类/库的时候了 …最近我一直在玩的一个: 尝试用不同的方法签名替换if/branching/select案例(多态性) YouTube上的干净代码对话 是的,这些都是好的 我认为,

对我来说,编写干净、优雅的代码是一种乐趣。我一直在寻找更多的方法来做到这一点。以下是我的一些策略:

  • 将较大的代码块保存在较小的例程/方法/类块中

  • 确保每个例行程序都有一个退出点。逻辑位于循环顶部的退出循环,而不是中断或某种类型的“退出循环”关键字

  • 避免全球化

  • 如果您刚刚对代码执行了复制/粘贴,那么现在是创建例程/类/库的时候了

…最近我一直在玩的一个:

  • 尝试用不同的方法签名替换if/branching/select案例(多态性) YouTube上的干净代码对话

  • 是的,这些都是好的

    我认为,最好的办法是假设第一个版本不是最终版本。计划重写和重构。看看小的块,想想怎样才能做得更优雅

    此外,还要阅读代码,尤其是已知的好代码。

    “一、二、多”

    在地球的某个偏僻角落,一个偏远的野生种群的语言中没有超过两个词。两个之后,有一个词表示“许多”。 我以前的老板鼓吹这句话是为了在日常生活中减少争吵的次数。我倾向于同意他的观点

    “不要重复你自己(干)”

    如果你在两个地方说了同样的话,那么你就有问题了,你应该重构。这两个(或更多)地方迟早会失去同步

    “保持简单,愚蠢(吻)”

    不要过度设计。

    -将较大的代码块保存在较小的例程/方法/类块中

    我喜欢做的是先创建一个主函数,这样我就不必一开始就创建大量的小函数,这会妨碍我的思路,然后再将其重构为更小的函数。重构很棒

    确保每个例行程序都有一个退出点。逻辑位于循环顶部的退出循环,而不是中断或某种类型的“退出循环”关键字

    这不一定更干净。这只会使证明函数的正确性变得更容易。有关更多详细信息,请参阅

    避免全球化


    有时,全球都是好的。很多时候,人们使用单例只是为了避免使用“全局”,而“全局”实际上是一个具有更多开销的全局变量。

    如果您还没有阅读完整的代码,我强烈建议您停止阅读堆栈溢出数天(或者无论需要多长时间),然后阅读它


    不要拖延。曾经当你想办法改进一段代码时,不管有多困难,也不管需要多长时间,都要马上去做。始终寻找潜在的改进,决不走捷径


    现在,这不是开发代码的最有效或最有利可图的方法,这就是为什么专业代码库很少是美丽的例子。但这不是你的问题。

    通常,干净的代码与短函数或更好的缩进相关联。所以不要落入那个陷阱。花大量时间设计课程。有一些很好的原则可以让你设计和构建好的有意义的类。然后是选择适当的设计模式来建模类的行为。当然,永远记住要遵循保持简单的原则。最后,确保在您的架构中有足够的代码覆盖复杂函数。遵循所有这些可以帮助您编写干净的代码。以下是我向朋友和同事推荐的一个好方法。

    在Comp Sci中,我听到了一些一直困扰着我的东西:

    编程中只有3个数字:0、1和无穷大


    当然,现实迫使我们使用其他数字。但是我总觉得如果我使用这三个数字以外的数字,我的代码会变得不那么优雅。

    虽然可能不是您想要的答案类型,但我认为基于组件的设计倾向于通过优雅的体系结构使自己适合优雅的代码。思考如何分离代码会将结构和顺序应用于一个混乱的过程(有时)。代码的优雅可以是在实现之前就开始担心(最好是彻底的),也可以是通过重构和简化来寻求初始集成。如果您使用基于组件的模型,那么重构应用程序的完整部分将成为一项更易于管理的任务——只要在美化/简化过程中输入和输出保持不变。对我来说,关注整体应用程序结构已经成为优雅代码的关键。如果没有前者,很难实现后者,除非您的应用程序范围很小


    归根结底,代码是一个可塑性和不断变化的过程。优雅只是在不同的时间点才如此,因为有些东西可以优雅地开始,经过几次迭代后就变成了乱七八糟的东西。在这种情况发生后,它会再次被重构为优雅,以此类推,这就是为什么通过完善的体系结构来支持这一想法会使您的代码更容易保持优雅,而不会破坏不相关的项目。

    这里没有问题。任何一本关于重构的像样的书都会给你带来极大的乐趣。(投票结束)这个“问题”太模糊和开放了。查看此网站上的整个[best practices]标签。这应该是一个社区Wiki线程吗?我最初听说“一、二、无限”及其变体是关于何时编写工具以自动化任务的解释。感谢您的建议,它现在在我的购买清单上。