coding 注意事项(总结中)
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 注意事项(总结中)的更多相关文章
- Coding编译连接过程中遇到的问题及解决方法(iOS)
Coding 上下载地址:https://coding.net/u/coding/p/Coding-iOS/git Github源码下载地址:https://github.com/Coding/Cod ...
- solr注意事项-solrconfig中的默认搜索域会覆盖schema中的默认搜索域,注意copyfeild中被corp的字段搜索
结论一:solrconfig.xml的默认搜索配置权限高于schema.xml中的默认搜索配置! 配置1:solrconfig.xml文件中关于select的配置: <requestHandle ...
- coding++:对List中每个对象元素按时间顺序排序
需求: 需要对List中的每个User按照birthday顺序排序,时间由小到大排列. package com.tree.ztree_demo.orderby; import java.text.Si ...
- Emmet (Zen Coding) 官方文档中HTML语法的总结
1. 嵌套操作---------- 子操作: > div>ul>li <div> <ul> <li></li> </ul> ...
- CODING DevOps 助力中化信息打造新一代研效平台,驱动“线上中化”新未来
中化信息技术有限公司,简称"中化信息",是世界 500 强企业中国中化控股有限责任公司(简称"中国中化")的全资直属公司,依托于中国中化的信息化建设实践,建立起 ...
- JavaScript语言学习中的注意事项
javascript: 基于浏览器 基于对象 事件驱动 脚本语言 由: javascript: ECMAscript(ES) DOM文档对象模型 BOM浏览器对象模型,三部分组成 使用js的三种方式 ...
- JQuery选择器中的一些注意事项
1. 选择器中含有特殊符号的注意事项 1. 1 选择器中含有",","#","("或"]"等特殊字符 根据w3c的规定, ...
- Eclipse中各种编码格式及设置
操作系统:Windows 10(家庭中文版) Eclipse版本:Version: Oxygen.1a Release (4.7.1a) 刚看到一篇文章,里面介绍说Ascii.Unicode是编码,而 ...
- CODING 项目协同 2.0 —— 让协作有条不紊
本文为 CODING 高级产品经理王海明 在腾讯云 CIF 工程效能峰会上所做的分享.文末可前往峰会官网,观看回放并下载 PPT. 大家好,我是 CODING 高级产品经理王海明,今天与大家分享的是项 ...
随机推荐
- iOS 原生库(AVFoundation)实现二维码扫描,封装的工具类,不依赖第三方库,可高度自定义扫描动画及界面(Swift 4.0)
Create QRScanner.swift file // // QRScanner.swift // NativeQR // // Created by Harvey on 2017/10/24. ...
- kali的安装详解--摘自官方
官方网址:https://www.kali.org/docs/virtualization/install-vmware-workstation-player-kali-guest-vm/ 在VMwa ...
- 基于openshift+华为对象存储的CSI开发
目录 需求来源 环境准备 代码修改 镜像下载 镜像生成 修改部署文件 部署CSI插件 CSI原理 核心原理 生命周期: 组件介绍 FAQ 参考: 需求来源 项目上目前使用的是openshift 3.1 ...
- hdu3038加权(扩展)并查集
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/3038/ 参考博客: https://blog.csdn.net/weixin_44580710/article/ ...
- 最大比率传输(Maximum Ratio Transmission, MRT)原理分析
转载请注明出处. 最大比率发射(Maximum Ratio Transmission, MRT)是文献中经常看见的一个词,今天就在这里做一下笔记. 参考文献为:T. K. Y. Lo, "M ...
- Nginx | CentOS 8 安装Nginx详细教程
Nginx是一个web服务器也可以用来做负载均衡及反向代理使用, 目前使用最多的就是负载均衡,这篇文章主要介绍了centos8 安装 nginx Nginx是一种开源的高性能HTTP和反向代理服务器, ...
- SpringMVC常见面试题总结(超详细回答)
SpringMVC常见面试题总结(超详细回答) 1.什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的 ...
- 为什么信息熵要定义成-Σp*log(p)?
作者:西贝链接:https://www.zhihu.com/question/30828247/answer/64816509来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- .NET Core技术研究-配置读取
升级ASP.NET Core后,配置的读取是第一个要明确的技术.原先的App.Config.Web.Config.自定义Config在ASP.NET Core中如何正常使用.有必要好好总结整理一下,相 ...
- Pandas 精简实例入门
目录 0. 案例引入 1. Pandas 主要数据结构 1.1 DataFrame 1.1.1 设置索引 1.1.2 重设索引 1.1.3 以某列为索引 1.2 MultiIndex 1.3 Seri ...


