阅读笔记之《程序员修炼之道-从小工到专家》八

第41节 注重实效的团队

1、书籍的前几章讲了几条如何成为注重实效的开发者的建议,当然他们也对团队有所帮助,如果个体都是注重实效的,那他对整体起的作用更大。

2、不要留破窗户:作为整体的团队更不应该容忍代码质量的问题,不规范的不在乎质量的团队,很有可能把那些注重实效的开发者带偏。

3、煮青蛙:整体中的个人更难觉察到作为团队所存在的问题,可以指定一个“检测员”,让他去检查团队整体进度,依赖项的准备情况,各个环节的配合等内容。

4、交流:杰出的项目团队往往有着截然不同的个性,更能与其他团队进行配合。有一个简单的帮助团队凝聚力的方法:创立团队品牌,以品牌代指整个团队。

5、不要重复你自己(DRY):由于个人理解程度的不同或者新成员的加入,团队总会面临重复的内容,适当的指派一名管理员,让他专门维护这些资料,所有对此有疑问的人都不必自我寻找,只要去找管理员就行了。

6、正交性:对于较大的团队,更应该通过功能进行组织划分,而不是工作职务。比如开发多个项目,会有多名开发,多名测试,多名设计,他们之间更应该按照具体项目进行划分,一个项目的开发,测试和设计为一个小团体。

7、自动化:确保一致性和准确的一种很好的方式是使团队所做的每件事情都能自动化,如果还没有做到那就尝试去做。

8、知道如何停止绘画:团队是由个体组成的,给每个成员足够的空间,并支持他们,而不是一直给他们具化各种需求。

第42节 无处不在的自动化

1、文明通过增加我们不加思索就能完成的重要操作的数目而取得进步。— 阿尔弗雷德·诺思·怀特海

2、我们应该在尽可能多的场景下使用自动化,因为人工流程及不能保证一致性也无法保证重复性。

3、在一些特定场景下我们可以选择适当的工具进行自动化处理:

  • 执行周期任务时可以使用 Cron
  • 项目编译时虽然可以使用 IDE,但是 Makefile 更适合自动化场景
  • 使用生成代码解决不得不做的重复性代码问题
  • 构建自动化,其实就是目前比较常用各类 CI/CD 工具
  • 自动化管理,这是一种更自由的自动化场景,比如要回复 Email,要发布网站,审批流程等,这些可以使用 Shell 或者 Perl、Python 等高级脚本语言。

第43节 无情的测试

1、注重实效的程序员会受到找到自己 bug 的驱使,以免以后经受由别人找到我们 bug 带来的羞耻。

2、早测试,常测试,自动化测试。要通过全部测试,编码才算完成。

3、测试主要围绕三个方面进行:测试什么、怎样测试、何时测试。

4、测试什么。测试类型有以下这些:

  • 单元测试:单元测试是函数级,有时也算做模块级的测试,要保证他们都正常通过。
  • 集成测试:组成项目的子系统能工作,且它们之间能很好的协同。
  • 验证和校验:这个类似AB测,是产品层面的测试。
  • 异常测试,资源耗尽,错误情况,如何恢复等。
  • 性能测试,压力测试,负载测试:这些情况通常是服务器相关的测试流程。
  • 可用性测试:也是产品项的测试,需要分析和调研,需求是否是有用的。

5、怎样测试。主要介绍有哪些测试方法:

  • 回归测试:回归测试通常是测试的后面阶段,新旧功能一起测试,新功能不应该影响旧功能。

  • 测试数据:对于一些特殊场景,测试数据能起到很大帮助,比如需要大量数据,强调边界条件的数据,能展现特定字段的数据等。

  • GUI系统:UI通常不好测试,所以应该做好解耦,将逻辑和视图拆分开进行测试。

  • 对测试进行测试:故意制造一些bug,观察你的测试系统能否发现。

  • 彻底测试:这里需要强调的是测试覆盖率,这其中需要强调的是测试状态的覆盖,而不是代码覆盖。要对不同状态都覆盖到。

6、何时进行测试。尽早测试,而且测试应该是自动完成的,我们在提交代码时就应该保证测试已经全部通过。

第44节 全都是写

1、代码要跟文档紧密结合,我们要认真对待注释及文档,他们不是可有可无的东西。

2、我们喜欢看到简单的模块级头注释,关于重要数据和类型声明的注释,以及给每个类和每个方法所加的简要头注释,用于描述函数的用法和任何不明了的事情。

3、应当使用特定的格式进行注释,通常对应语言或者 IDE 有推荐的注释格式。

4、可执行文档,即使按照特定格式进行注释,然后利用工具提取注释内容并生成文档。例如 JavaDoc

5、有时文档撰写者和开发并不是同一人,但他们应当接受同样的原则,特别是 DRY,正交性,以及自动化原则等。

iOS也有一个文档生成工具:jazzy,支持 OC 和 Swift,它可以根据标准的注释生成文档。

第45节 极大的期望

1、某个项目团队奇迹般的完成了一个非常复杂的项目,但却遭到用户抵制,原因是该引用没有帮助系统。所以考虑现实,项目的成功是由它在多大程度上满足了用户的期望来衡量的。

2、要与客户之间多交流期望,了解他们的需求,而不是一味沉溺在技术的世界里。

3、适当制造惊喜,会有些通用性的技巧能让项目获得更好的体验。比如:

  • 气球式帮助
  • 快捷键
  • 日志文件分析器
  • 自动化安装
posted @ 2023-06-07 23:31  你好,幸会  阅读(3)  评论(0编辑  收藏  举报