第一次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

转载于:https://www.cnblogs.com/journeyonmyway/p/4358608.html

[翻译]Feedback on the Go Challenge solutions相关推荐

  1. 如何成长为一名开发人员

    I can completely understand if you sometimes feel as though you are not growing in your career or ar ...

  2. delphi5开发人员指南_建立开发人员职位的黄金指南

    delphi5开发人员指南 Landing a software engineering position can be one of the most difficult obstacles tha ...

  3. 设计师思维 工程师思维_从设计思维到设计行为

    设计师思维 工程师思维 By Marco Ossani & Gianluca Gambatesa Marco Ossani和Gianluca Gambatesa 为什么尽管进行了诚实的努力和对 ...

  4. excel模糊查找公式_Excel查找公式挑战20171026

    excel模糊查找公式 Here's an Excel Lookup Formula challenge to get your brain fired up. Can you solve it wi ...

  5. 论文中文翻译——kAFL Hardware-Assisted Feedback Fuzzing for OS Kernels

    本论文相关内容 论文下载地址--26th USENIX Security Symposium 论文中文翻译--kAFL Hardware-Assisted Feedback Fuzzing for O ...

  6. challenge是什么意思_英语单词学习-challenge是什么意思_翻译_用法_例句

    我们在学习英语这门科目的时候,不仅要重视听说读写,对于英语的基础知识也要重视,只有基础知识掌握到了,才能把英语这门科目学的更好.为了大家能够多学习一些英语单词,小编就带大家先了解一下英语单词学习-ch ...

  7. LLMs之InstructGPT:《Training language models to follow instructions with human feedback》翻译与解读

    LLMs之InstructGPT:<Training language models to follow instructions with human feedback>翻译与解读 导读 ...

  8. (翻译)适当挑战(Appropriate challenge)

    问题概述   需要给用户适当挑战以保持他们的参与度. 示例 用途 用于当过于困难的挑战会让用户倍感压力.焦虑不安时: 用于当过于简单寻常的任务会让有经验的用户感觉无趣时: 用于当同一系统需要同时满足有 ...

  9. 论文翻译-Denoising Implicit Feedback for Recommendation

    去噪内隐反馈 ABSTRACT 内隐反馈的普遍性使它们成为构建在线推荐系统的默认选择.虽然大量的隐式反馈减轻了数据的稀疏性问题,但缺点是它们在反映用户的实际满意度方面没有那么干净.例如,在电子商务中, ...

最新文章

  1. boost::mp11::mp_unique_if相关用法的测试程序
  2. 无法连接oralce问题(不断更新)
  3. How to get Intellisense for Web.config and App.config in Visual Studio .NET?(转载)
  4. 日语学习-多邻国-关卡1-餐馆
  5. 如何在idea中调试spring bean
  6. ios如何看idfv_ios获取手机状态 idfa   idfv   网络类型   分辨率   获取运营商
  7. 27个澳洲年轻人,重演了少年马云的一段奇遇
  8. Atitit 图像指纹识别匹配sift算法 atlks总结
  9. Ubuntu 命令技巧
  10. 实用机器人设计(一)-机器人技术基础
  11. NavigationDuplicated: Avoided redundant
  12. 哪种程序员最挣钱?平均月薪30.8K,网友说这是掌握世界的技术
  13. Android UI 冻结处理方法
  14. Vitalik Buterin:我的 40 升背包旅行指南
  15. swift 学习-- 元组
  16. leetcode 21.合并有序列表(js)
  17. Java和C++基本类型与语法的区别
  18. SAP se11透明表添加字段时报错:字段级的结构更改(转换表xxxxxx)
  19. 远程桌面由于以下原因之一无法连接到远程计算机
  20. java JScrollPane设置大小宽高

热门文章

  1. 我是机器人布里茨_9.19机器人钩子范围增加,这些位置阴人无敌,一Q一个小朋友...
  2. 一张图告诉你E-R图怎么画
  3. 对称密码的编程使用(DES、3DES、AES)
  4. 玩转mini2440开发板之【tekkamanninja版的u-boot的编译和烧录】
  5. Build a Machine Learning Portfolio(构建机器学习投资组合)
  6. PADS 非常用操作 备忘
  7. 代码单元测试工具:gmock
  8. linux misc device字符杂项设备驱动
  9. 为什么你总是申请不到大额贷款?
  10. VHDL中的转换函数