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. 我的MacbookPro进水了!维修过程记录

    电脑进水与解决方案 如果事情有变坏的可能,不管这种可能性有多小,它总会发生.---墨菲定律 进水过程 2020年03月21日日下午3点左右,不小心把水杯碰倒了,水通过电脑右侧的键盘处进入了大概有10毫 ...

  2. Spotlight on Unix/Mysql安装使用详解

    Spotlight on Unix安装使用详解  1.远程连接linux服务器,查看系统是否已经安装sysstat包,如果没有的话,按照以下方法安装sysstat. (1)检查Linux是否安装sys ...

  3. Proteomic Profiling of Paired Interstitial Fluids Reveals Dysregulated Pathways and Salivary NID1 as a Biomarker of Oral Cavity Squamous Cell Carcinoma (解读人:张聪敏)

    文献名:Proteomic Profiling of Paired Interstitial Fluids Reveals Dysregulated Pathways and Salivary NID ...

  4. Python GUI wxPython StaticText控件背景色透明

    import wx class TransparentStaticText(wx.StaticText): """ 重写StaticText控件 "" ...

  5. 新文预览 | IoU-aware Single-stage Object Detector for Accurate Localization

    论文基于RetinaNet提出了IoU-aware sinage-stage目标检测算法,该算法在regression branch接入IoU predictor head并通过加权分类置信度和IoU ...

  6. Linux下反弹shell笔记

    0x00 NC命令详解 在介绍如何反弹shell之前,先了解相关知识要点. nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流 可运行在TCP或者UDP模式,添加参数 —u 则 ...

  7. 第十周Java实验作业

    实验十  泛型程序设计技术 实验时间 2018-11-1 1.实验目的与要求 (1) 理解泛型概念: 泛型:也称参数化类型,就是在定义类,接口和方法时,通过类型参数只是将要处理的类型对象.(如Arra ...

  8. 如何使用 electron 屏幕或摄像头录制并保存到本地

    思路分析 通过 electron desktopCapturer 和 navigator 获取要进行录制的媒体源信息: 使用 MediaRecorder 对视频流进行录制: 将 MediaRecord ...

  9. mysql数据库中的mybatis中xml解决in不起作用的问题

    在sql语句中,某个字段进行in条件的时候,不起作用, 但是执行语句查询为null数据,但是根据表中数据来看是不可能有null数据的可能性的,所以不知道什么原因导致数据出不来 我因此想到以下解决办法来 ...

  10. shell脚本介绍以及常用命令

    Shell脚本 Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的 ...