首页 > 其他分享 >go语言代码规范

go语言代码规范

时间:2023-04-11 23:23:36浏览次数:30  
标签:err 代码 规范 注释 读者 go 清晰

go语言代码规范

指南篇

编码风格原则

  • 清晰:代码的目的和原理对读者来说是清晰的
  • 简单:代码以最简单的方式完成其目标
  • 简明:代码具有较高的信噪比
  • 可维护性:编写的代码可以很容易维护
  • 一致:代码与广泛的谷歌代码库风格一致

清晰

清晰主要是通过有效的命名、有用的注释和有效的代码组织来实现的。

清晰与否要从代码的读者角度来看,而不是从代码的作者的角度来看。代码的易读性比易写性更重要。

代码的清晰性有两个不同的方面:

  • 代码实际上在做什么?
  • 为什么代码在做它所做的事?
代码实际上在做什么
  • 使用更具描述性的变量名
  • 添加额外的注释
  • 用空白和注释来分隔代码
  • 将代码重构为独立的函数/方法,使其更加模块化。
为什么代码在做它所做的事

代码的原理往往是通过变量、函数、方法或包的名称来充分传达的。如果这些元素名称无法做到这点,那么添加注释就会变得很重要。当代码包含读者可能不熟悉的细微差别时,解释“为什么”将变得尤其重要。

注释最好是解释为什么要做某事,而不是解释代码在做什么。

简单

  • 从上到下都易于阅读
  • 不假设你已经知道它的工作原理
  • 不假设你能记住前面所有的代码
  • 没有不必要的抽象层次
  • 在平凡代码中没有引起人们注意的名字
  • 让读者清楚地了解价值和决策的传播情况
  • 有注释,解释为什么,而不是代码在做什么,以避免将来出现偏差
  • 有独立的文档
  • 拥有有用的错误和有用的失败测试用例
  • 通常与“故作聪明的”代码相互排斥

要控制代码的复杂性

简明

简明的Go代码具有很高的信噪比。它很容易分辨出相关的细节,而命名和结构则可以引导读者了解这些细节。

理解和使用常见的代码结构和地道用法对于保持高信噪比也很重要。例如,下面这个代码块在错误处理中非常常见,读者可以很快理解这个代码块的意图:

// Good:
if err := doSomething(); err != nil {
    // ...
}

如果代码看起来与此非常相似,但却有细微的不同,读者可能不会注意到这种变化。在这样的情况下,值得故意“提高”错误检查的信号,我们可以通过添加一个注释来引起注意。

// Good:
if err := doSomething(); err == nil { // if NO error
    // ...
}

可维护

  • 易于被未来的程序员正确修改
  • 具有结构化的API,使其能够优雅地扩展
  • 清楚它所做的假设,并选择与问题结构相对应的抽象,而不是与代码的结构相对应。
  • 避免不必要的耦合,不包含未用到的功能特性。
  • 拥有一个全面的测试套件,以确保承诺的行为得到维护以及重要的逻辑是正确的,并且在测试失败的情况下为开发人员提供清晰、可操作的诊断

可维护的代码还可以避免将重要的细节隐藏在容易被忽视的地方。

一致

一致性的代码是指在更广泛的代码库中,在一个团队的代码中或一个包的范围内,甚至在一个文件中,看起来、感觉和行为都类似的代码。

标签:err,代码,规范,注释,读者,go,清晰
From: https://www.cnblogs.com/zpf253/p/17308247.html

相关文章

  • 第八篇 手写原理代码 - 对象 【 实现 Object.assign() 和 Object.create() 】
    1、Object.assign(target,...sources)Object.assign()方法用于将一个或多个源对象的属性复制到目标对象中。它只复制源对象自身可枚举的属性,同时也能够拷贝getter和setter函数2、Object.create(proto[,propertiesObject])Object.create()方法创建一个新对象,使......
  • R语言中实现sem进行结构方程建模和路径图可视化|附代码数据
    原文链接:http://tecdat.cn/?p=23312最近我们被客户要求撰写关于结构方程建模的研究报告,包括一些图形和统计输出。结构方程模型是一个线性模型框架,它对潜变量同时进行回归方程建模引言 诸如线性回归、多元回归、路径分析、确认性因子分析和结构回归等模型都可以被认为是SEM的......
  • 复杂网络社区发现算法聚类分析全国电梯故障数据和可视化:诊断电梯“安全之殇”|附代码
    参考原文:http://tecdat.cn/?p=2186最近我们被客户要求撰写关于复杂网络社区发现算法的研究报告,包括一些图形和统计输出。物业工程肩负着维持项目各类设施设备的正常运作,保障全体业主的正常生活,令物业保值升值,是项目的心脏部门。拓端数据(tecdat)研究人员根据全国电梯故障上报汇总......
  • MATLAB代码:基于DBSCAN密度聚类的风电-负荷场景削减方法
    MATLAB代码:基于DBSCAN密度聚类的风电-负荷场景削减方法关键词:密度聚类场景削减DBSCAN场景生成与削减kmeans 参考文档:《氢能支撑的风-燃气耦合低碳微网容量优化配置研究》第3章:完美复现仿真平台:MATLAB主要内容:代码主要做的是一个基于DBSCAN密度聚类的风电-负荷场景生成与......
  • git提交代码被拒推送
    原文章链接http://t.csdn.cn/PxVrg目录原文章链接http://t.csdn.cn/PxVrggit提交代码被拒推送问题描述:问题原因:解决方案:解决方案一:解决方案二:git提交代码被拒推送问题描述:idea提交代码出现Pushtoorigin/masterwasrejected问题原因:一般发生在GitHub或码云刚刚创建......
  • sqlalchemy快速插入数据,scoped_session线程安全,加载类上的装饰器,基本增删改查,django中
    今日内容sqlalchemy快速插入数据sqlalchemy是什么orm框架,跟其他web框架没有必然联系,可以独立使用安装,快速使用,执行原生sql创建表和删除表不能创建数据库不能修改字段(增加,删除)使用orm插入第一步:生成engine对象engine=create_engine("mysql+pymysql://[email protected].......
  • Django配置邮件发送
    需求用户点击忘记密码后会向邮箱发送验证码,之后用户进行验证并修改密码实现步骤登录qq邮箱,点击设置,配置配置IMAP/SMTP点击开启,之后发送短信,成功发送后会看到如下内容在settings.py文件中添加如下内容#MAILEMAIL_HOST='smtp.qq.com'EMAIL_PORT=587#或465EMAIL_......
  • MATLAB代码:含风光柴储微网多目标优化调度
    MATLAB代码:含风光柴储微网多目标优化调度关键词:微网调度风光柴储 粒子群算法多目标优化仿真平台:MATLAB平台采用粒子群实现求解主要内容:代码构建了含风机、光伏、柴油发电机以及储能电站在内的微网优化运行模型,并且考虑与上级电网的购售电交易,综合考虑了多方经济成本以及风......
  • MATLAB代码:基于列约束生成法CCG的两阶段鲁棒问题求解
    MATLAB代码:基于列约束生成法CCG的两阶段鲁棒问题求解关键词:两阶段鲁棒列约束生成法CCG算法鲁棒优化参考文档:《Solvingtwo-stagerobustoptimizationproblemsusingacolumn-and-constraintgenerationmethod》仿真平台:MATLABYALMIP+CPLEX优势:代码注释详实,适合参考学......
  • MATLAB代码:基于主从博弈的产消者 微网群优化定价模型
    MATLAB代码:基于主从博弈的产消者微网群优化定价模型关键词:主从博弈产消者微网动态定价能量管理仿真平台:matlab主要内容:为了提高用户间光伏电量共享水平,根据用户的用电特性,构建了光伏用户群内的多买方—多卖方格局。结合分布式光伏上网政策,运营商作为主导者,以其收益最......