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. Natas29 Writeup(Perl命令注入、00截断、绕过过滤)

    Natas29: 本关打开后,可以看到一个下拉列表,选择不同的内容,会得到不同的大量文本的页面. 观察url部分:http://natas29.natas.labs.overthewire.org/i ...

  2. Python-时间戳、元组时间的格式、自定义时间格式之间的转换

    一.时间戳.元组时间的格式.自定义时间格式之间的转换 1.下面是三者之间的转换关系: 2.代码如下: import time import datetime print(time.time()) #获 ...

  3. Django之路由层和视图层详解

    路由层 首先我们来看一下,路由层都有哪些东西,其实你看django很人性化,将所有的介绍都放在了简介里面,不信,你看

  4. hdu6026 dijkstra

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/6026/ 题意大致是:给定一个图,要求删边使他变成树,使得每个点到0的距离就是原图中0到这个点的最短路径.其实就是 ...

  5. Flutter 强大的MediaQuery控件

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 MediaQuery 通常情况下,不会直接将MediaQu ...

  6. 大规模机器学习(Large Scale Machine Learning)

    本博客是针对Andrew Ng在Coursera上的machine learning课程的学习笔记. 目录 在大数据集上进行学习(Learning with Large Data Sets) 随机梯度 ...

  7. 3 report formats of SFDC

    Choose one of the following report formats using the Format menu of the report builder. Tabular form ...

  8. TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径。

    Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...

  9. PyTorch 实战-张量

    Numpy 是一个非常好的框架,但是不能用 GPU 来进行数据运算. Numpy is a great framework, but it cannot utilize GPUs to acceler ...

  10. 初始化一个vue项目

    1.安装node 端开发框架和环境都是需要 Node.js ,先安装node.js开发环境,vue的运行是要依赖于node的npm的管理工具来实现,下载https://nodejs.org/en/,安 ...