zoukankan      html  css  js  c++  java
  • The Zen of Go

    翻译自

    https://the-zen-of-go.netlify.app/

    Dave Cheney在YouTube也有这次演讲的视频。

    每个包实现单一目的
    精心设计的Go软件包提供了一个单一的想法,以及一系列相关的行为。一个好的Go软件包首先选择一个好名字。您可以将包裹的名称想像成一个升降梯,用一个词来描述包裹的内容。

    明确处理错误,显示的处理
    健壮的程序由处理故障案例的片段组成,然后再将其拍在背面。 if err!= nil {return err}的冗长性被故意在发生故障的每个点处理故障的值所抵消。紧急和恢复也不例外,它们并非打算以这种方式使用。

    早日返回,而不是深深地嵌套
    每次缩进时,您都会在程序员的堆栈中添加另一个先决条件,这会占用他们短期内存中的7±2个插槽之一。避免需要深缩进的控制流。与其深入嵌套,不如使用保护子句将成功路径保持在左侧。

    并发给调用者
    让调用者选择是否要异步运行您的库或函数,不要强加于他们。如果您的库使用并发,则应透明地进行。

    在启动goroutine之前,请知道它何时会停止
    Goroutines拥有资源;锁,变量,内存等。释放这些资源的可靠方法是停止拥有的goroutine。

    避免包级别状态
    通过提供类型需要的依赖项作为该类型上的字段,而不是使用包变量,来寻求明确的,减少耦合和诡异的动作。

    简单性很重要
    简单性不是老练的代名词。简单并不意味着粗糙,而是可读性和可维护性。如果可以选择,请遵循较简单的解决方案。

    编写测试以锁定包API的行为
    请确保测试用户可以观察和依赖的行为。

    如果您认为速度缓慢,请先通过基准测试进行验证
    以表现为名犯下了许多危害可维护性的罪行。优化会破坏抽象,暴露内部和紧密耦合。如果您选择承担这笔费用,请确保有充分理由这样做。

    节制是一种美德
    适度使用goroutine,通道,锁,接口,嵌入。

    可维护性计数
    清晰,易读,简单是可维护性的所有方面。离开后,您可以努力维护的东西可以保留吗?您今天该如何做,才能使以后的人们变得更轻松?

    一个没有高级趣味的人。 email:hushui502@gmail.com
  • 相关阅读:
    小w的喜糖(candy)
    亚瑟王(arthur)
    Bajtman i Okrągły Robin
    Bajtman i Okrągły Robin
    网络流模板
    网络流模板
    觉醒力量 (hidpower)
    觉醒力量 (hidpower)
    E-card
    E-card
  • 原文地址:https://www.cnblogs.com/CherryTab/p/12792239.html
Copyright © 2011-2022 走看看