Uber Go 语言代码风格指南可以参考下:https://www.cnblogs.com/ricklz/p/11670932.html

最近写代码,老是被吐槽,代码写的不好,细节处理的不好。

那么下面来总结下平时遇到的点,并且需要改进的地方。

一、命名不规范

1、经常遇到变量的名字写错

2、命名不地道,拼音就不要存在了,读代码的时候看到命名就知道这个函数和变量的作用

3、不要出现无脑的错错别字

4、对于每个注释我们也要认真的对待

虽然对于一些一眼就看明白用法的函数,我们不用加上文字的描述,但是函数一定要对应好

二、珍惜每一个参数变量的命名和使用

1、没用到的参数变量尽量不要去申请

param明显的没有用到,这时候我们就没有必要再去声明了,可以直接发个nil到函数里面。

2、对于一些数组的操作当我们知道要传入的值的时候可以直接初始化,不用刻意的append

如果改成下面的是不是就会优雅很多了呢

3、返回参数如果采用命名变量,那么就不要在 return 的时候,又带上其他变量。不要混用。容易出 bug。

func (h *PrefixAppliesHandler) DoOrder(id flake.ID, orderGoods []proto.OrderGoodsInput) (outOrder proto.OrdersInput, outGoodsList []proto.OrderGoodsOutput, err error) {
var inputOrder proto.OrdersInput
var goodsList []proto.OrderGoodsOutput
inputOrder.GoodsInfo = orderGoods
inputOrder.PrefixId = id
inputOrder.State = proto.OrderStatePaying
if inputOrder.PrefixId <= 0 {
return inputOrder, goodsList, apierror.ErrOrderPrefixIdIsNecessary
}

我们可以看到上面的函数返回值的形参定义的是 outOrder, outGoodsList , err,但是下面又定义了

 var inputOrder proto.OrdersInput
var goodsList []proto.OrderGoodsOutput

用来作为函数的返回值,那么这就是容易出问题的点。

4、错误的判断应该尽早的判断尽早的返回,减少无用变量的申请

还是上面的例子

func (h *PrefixAppliesHandler) DoOrder(id flake.ID, orderGoods []proto.OrderGoodsInput) (outOrder proto.OrdersInput, outGoodsList []proto.OrderGoodsOutput, err error) {
var inputOrder proto.OrdersInput
var goodsList []proto.OrderGoodsOutput
inputOrder.GoodsInfo = orderGoods
inputOrder.PrefixId = id
inputOrder.State = proto.OrderStatePaying
if inputOrder.PrefixId <= 0 {
return inputOrder, goodsList, apierror.ErrOrderPrefixIdIsNecessary
}

我们可以看到

 if inputOrder.PrefixId <= 0 {
return inputOrder, goodsList, apierror.ErrOrderPrefixIdIsNecessary
}

这个校验发生在每一次的调用,如果这个触发了,前面的变量的赋值就变的没有意义了

func (h *PrefixAppliesHandler) DealOrderInformation(PrefixId flake.ID, orderGoods []proto.OrderGoodsInput) (outOrder proto.OrdersInput, outGoodsList []proto.OrderGoodsOutput, err error) {
// 前缀校验
if PrefixId <= 0 {
return outOrder, outGoodsList, apierror.ErrOrderPrefixIdIsNecessary
}
// 校验价格
if len(orderGoods) <= 0 {
return outOrder, outGoodsList, apierror.ErrOrderPriceIncorrect
}

我们可以 函数的开始部门就校验,然后在对变量进行赋值

coding 注意事项(总结中)的更多相关文章

  1. Coding编译连接过程中遇到的问题及解决方法(iOS)

    Coding 上下载地址:https://coding.net/u/coding/p/Coding-iOS/git Github源码下载地址:https://github.com/Coding/Cod ...

  2. solr注意事项-solrconfig中的默认搜索域会覆盖schema中的默认搜索域,注意copyfeild中被corp的字段搜索

    结论一:solrconfig.xml的默认搜索配置权限高于schema.xml中的默认搜索配置! 配置1:solrconfig.xml文件中关于select的配置: <requestHandle ...

  3. coding++:对List中每个对象元素按时间顺序排序

    需求: 需要对List中的每个User按照birthday顺序排序,时间由小到大排列. package com.tree.ztree_demo.orderby; import java.text.Si ...

  4. Emmet (Zen Coding) 官方文档中HTML语法的总结

    1. 嵌套操作---------- 子操作: > div>ul>li <div> <ul> <li></li> </ul> ...

  5. CODING DevOps 助力中化信息打造新一代研效平台,驱动“线上中化”新未来

    中化信息技术有限公司,简称"中化信息",是世界 500 强企业中国中化控股有限责任公司(简称"中国中化")的全资直属公司,依托于中国中化的信息化建设实践,建立起 ...

  6. JavaScript语言学习中的注意事项

    javascript: 基于浏览器 基于对象 事件驱动 脚本语言 由: javascript: ECMAscript(ES) DOM文档对象模型 BOM浏览器对象模型,三部分组成 使用js的三种方式 ...

  7. JQuery选择器中的一些注意事项

    1. 选择器中含有特殊符号的注意事项 1. 1 选择器中含有",","#","("或"]"等特殊字符 根据w3c的规定, ...

  8. Eclipse中各种编码格式及设置

    操作系统:Windows 10(家庭中文版) Eclipse版本:Version: Oxygen.1a Release (4.7.1a) 刚看到一篇文章,里面介绍说Ascii.Unicode是编码,而 ...

  9. CODING 项目协同 2.0 —— 让协作有条不紊

    本文为 CODING 高级产品经理王海明 在腾讯云 CIF 工程效能峰会上所做的分享.文末可前往峰会官网,观看回放并下载 PPT. 大家好,我是 CODING 高级产品经理王海明,今天与大家分享的是项 ...

随机推荐

  1. 2. Plugin execution not covered by lifecycle configuration

    问题: 找到当前项目的工作空间下的.metadata\.plugins\org.eclipse.m2e.core路径, 然后添加lifecycle-mapping-metadata.xml文件,内容如 ...

  2. Mybatis(三)Mybatis映射开发

    4.1 一对一 4.1.1 表对应关系, 一个订单对应一个用户 4.1.2 实体对应关系 public class Order { private int id; private Date order ...

  3. 带修主席树 洛谷2617 支持单点更新以及区间kth大查询

    题目链接:https://www.luogu.com.cn/problem/P2617 参考博客:https://blog.csdn.net/dreaming__ldx/article/details ...

  4. apache系统故障排查方案及相关操作知识

    apache系统故障排查方案及相关操作知识 1.查看系统开的apache服务在哪个端口监听,有几个apache在服务,它的初始pid是多少 netstat -alop |grep LISTEN |gr ...

  5. C语言自学网官方微信相关功能使用方法

    一.微信扫描关注微信公众账号(C语言自学网),我们会不定时更新关于编程的技术文章和相关资讯,了解大佬的成长之路. 二.回复“C语言学习资料”,将显示由我们精心整理的全套C语言学习资料的下载地址及链接. ...

  6. arcgis连接oracle发布服务,提示数据未注册到服务器,手动注册服务器失败

    arcgis连接oracle数据库发布服务时候,分析之后提示:数据未注册到服务器上. 手动注册之后提示:数据客户端没有正确配置.实际上数据库客户端已经安装完成也可以使用. 设置 PATH 环境变量(仅 ...

  7. Thread Future模式

    多线程不管是extends Thread 还是 implements Runnable 都是要重写run 方法来实现,这两种方式子线程都没有返回值. 如果要实现主线程对子线程的监听,让子线程有返回值, ...

  8. 线程间交换数据的Exchanger

    作者:Steven1997 链接:https://www.jianshu.com/p/9b59829fb191 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. Exc ...

  9. RabbitMQ集群架构(HA)并结合.NET Core实操

    一.前言 已经一年没有更新博客了,由于公司事务比较多,并且楼主我也积极在公司项目中不断实践.net core.DDD以及Abp vnext,也积累了一些吐血经验,目前我在做一家在线教育公司负责智慧校园 ...

  10. 读者来信 | 如何判断HBase Major Compact是否执行完毕?(已解决)

    前言:之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的:于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:<读者来信>.欢迎关注本人微信公众号<HBa ...