[翻译]Feedback on the Go Challenge solutions
第一次Go Challenge比赛,中国区只有3人参赛。
赛后收到邮件,是一个审阅者的反馈,“Feedback on the Go Challenge solutions”,摘录如下:
保持简单粗暴
- 一个语义单元一个文件即可,不要像Java那样一个文件就一个类型定义
- decoder.go 放解码相关的内容,而 drum.go 放 Pattern 和 Track 类型,以及 String()
- 不要添加额外的类型,除非需要为其增加方法
Streaming 是个好概念
- 许多代码基于io.Reader 和 io.Writer,包括都用到的encoding/binary
- 有人直接将文件全部读到内存中,然后将[]byte封装到bytes.Reader里,这是不可取的,还不如直接使用打开的file,因为这就是一个 bytes.Reader
- 建议阅读“Crossing Streams: a Love Letter to io.Reader”
了解标准库
- 使用 io.LimitedReader 可以封装已有的io.Reader并设定最大长度来读取,结合上面提到的直接使用io.Reader更简单粗暴
Errors are values
- 没必要不停地做错误检查,这太繁琐
- 将io.Reader封装到自定义的Reader中,记录碰到的最后一个error
- 解析整个文件,别管那些错误
- 最后检查下存储错误的结构
- 建议阅读Rob Pike的“Errors are values”
不要泄露实现细节
- 虽然文件中使用[16]byte来存储节拍,但是对于ON/OFF类型,用[16]bool就好
- 没必要为了节省空间使用uint16,因为这会让API不好搞
写代码不是为了通过测试,而是为了解决问题
- Pattern 5在文件末尾有额外的数据,应该通过解码文件头获取文件长度来解析文件,而不是看ID有没有SPLI
- 通过测试不代表一切OK
[翻译]Feedback on the Go Challenge solutions的更多相关文章
- 【翻译】Organizing ASP.NET MVC solutions 如何组织你的ASP.NET MVC解决方案
序言 时隔一年,弦哥重出江湖,对于我们学习.NET MVC那将有大大的好处,期待弦哥的重构系列.在弦哥与jerrychou的交流中提到了一篇文章http://lostechies.com/jimmyb ...
- 论文翻译:2020_Acoustic Echo Cancellation Challenge Datasets And Testingframework
论文地址:ICASSP 2021声学回声消除挑战:数据集和测试框架 代码地址:https://github.com/microsoft/DNS-Challenge 主页:https://aec-cha ...
- xv6的作业翻译——作业1 - shell和系统调用
Xv6的lecture LEC 1 Operating systems L1: O/S overview L1:O/S概述 * 6.828 goals 6.828的目标 Understan ...
- Lab_1_SysOps_Compute_Linux_v2.5
System Operations - Lab 1: Creating Elastic Compute Cloud (Amazon EC2) Instances (Linux) - 2.5 ===== ...
- SQL Server 2008 R2 SP3 and SQL Server 2008 SP4 are now available!
时间 2014-10-02 00:00:00 SQL Server Team Blog 原文 http://blogs.technet.com/b/dataplatforminsider/arc ...
- 论文翻译:2021_ICASSP 2021 ACOUSTIC ECHO CANCELLATION CHALLENGE: INTEGRATED ADAPTIVE ECHO CANCELLATION WITH TIME ALIGNMENT AND DEEP LEARNING-BASED RESIDUAL ECHO PLUS NOISE SUPPRESSION
论文地址:https://ieeexplore.ieee.org/abstract/document/9414462 ICASSP 2021声学回声消除挑战:结合时间对准的自适应回声消除和基于深度学习 ...
- ZooKeeper Recipes and Solutions 翻译
ZooKeeper 秘诀 与解决方案 A Guide to Creating Higher-level Constructs with ZooKeeper Out of the Box Applica ...
- 文献翻译|Design of True Random Number Generator Based on Multi-stage Feedback Ring Oscillator(基于多级反馈环形振荡器的真随机数发生器设计)
基于多级反馈环形振荡器的真随机数发生器设计 摘要 真随机数生成器(trng)在加密系统中起着重要的作用.本文提出了一种在现场可编程门阵列(FPGA)上生成真随机数的新方法,该方法以 多级反馈环形振荡器 ...
- What is probabilistic programming? | 中文翻译
What is probabilistic programming? | 中文翻译 Probabilistic languages can free developers from the compl ...
随机推荐
- sds(简单动态字符串) 内存预分配优化策略
* 1024 , 也就是说. 当大小小于 1MB 的字符串运行追加操作时,sdsMakeRoomFor 就为它们分配多于所需大小一倍的空间: 当字符串的大小大于 1MB . 那么 sdsMakeRoo ...
- java项目的部署
1.将tomocat解压到服务器上 2.放项目war包. 3.war包解压. 4.修改端口配置. 1.<Server port="8024" shutdown="S ...
- Python之Seaborn
install: pip install seaborn official examples: https://seaborn.pydata.org/examples/index.html 在mac上 ...
- bootstrap基础学习十篇
bootstrap字体图标(Glyphicons) a.什么是字体图标 字体图标是在 Web 项目中使用的图标字体.虽然,Glyphicons Halflings 需要商业许可,但是您可以通过基于项目 ...
- db2 sequence
我的上两个专栏中已经介绍到了与版本 8 功能相关的主题.我们可能需要在今天设计的数据库和应用程序中考虑这些功能.我们已经谈论了新的数据分区的辅助索引和附加的索引修改.在上一期中,我们了解了 DSSIZ ...
- 蓝桥杯 第四届C/C++预赛真题(3) 第39级台阶(递归)
题目标题: 第39级台阶 小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶 ...
- poj 3275(传递闭包)
题目链接:http://poj.org/problem?id=3275 思路:对于n个节点,共有n*(n-1)/2对关系,对于给出的m对已经确定的关系,我们可以用传递闭包推出目前已经确定的关系对数an ...
- Entity Framework基础
http://blog.csdn.net/hurtlingsnail/article/details/53113934
- 语法之ADO.NET
ADO.NET的概念 由于本系列并不是主讲ADO.NET.所以这里笔者只会教上面定义有线连接方式相关的类.不管如何让我们先看一下ADO.NET类相关联的所有基类吧.这样子也方便我们下面的学习. 下面是 ...
- 阿里面试经历JAVA总结
为记录阿里的电面经历,特与大家分享,岗位是JAVA研发工程师. 一面主要问题如下: 1)首先自我介绍 2)数据结构算法的基本问题,如排序算法,二叉树遍历,后序遍历非递归,图的最短路径问题 3)对一个数 ...