技能与成长-读书笔记

97 阅读3分钟

如何学习新的编程语言

学习重点

重点是三个特性:

  • 基本表达形式

    • 基本语法、关键字、变量常量等
  • 组合的方法

    • 网络请求、数据处理、内置函数等
  • 抽样的方法

    • 开源类库、开源框架、底层原理等

学习方式

不同的学习方式适合不同的人

  • 阅读书籍

    • 相对完善且成体系
    • 陌生的名词、定义等阻碍学习进度
  • 课程、视频

    • 偏向实践
  • 翻阅源码—最重要

多练多实践,很多问题只有在实践中才会遇到,要去想办法解决

六何法

What、Who、When、Where、Why、How

问题驱动学习,加深理解

代码规范与测试、分析

规范是很重要的,约束、统一。

可以提高代码质量、可读性,降低维护成本

要有对应的测试单元去做代码在规范下的检查

测试驱动设计

  • 无测试,不代码
  • 单元测试不在多,能识别问题即可
  • 代码不在多,能全通过单元测试即可

静态代码分析

仅通过分析代码的词法、语义、控制流等检查代码正确性,帮助查找结构性错误、不符合规范得房、安全漏洞等

分析工具

Checkstyle、FindBugs、P3C

代码审查

对代码进行系统审查、修正开发初期未发现的错误,提升质量。

主要通过开发者相互阅读来发现。

好处

  • 提升代码质量、保证风格统一
  • 相互学习的好机会
  • 从另一角度审视自己代码

如何审查

审查清单

  • 代码结构—重要
  • 代码安全性
  • 代码性能—重要
  • 代码注释—重要
  • 单元测试
  • 代码优化—重要

审查工具

Phabricator、Gerrit、Code Striker

审查细节

  • 通读改动处上下文代码,更好发现问题
  • 日常进行代码审查
  • 一次不审查太多、太久

清单和模板

清单必须简洁、直接、易操作。且尽可能融入日常流程中

产品需求模板,规范梳理产品内容、并根据情况修改

程序员工作法则

工具化法则

用于构建、处理特定问题,需要进行治理和统筹管理。

  • 尽可能复用
  • 开发插件化能力
  • 根据情况分别建设

自动化法则

通过工具来完成重复工作,提升效率

在开发、测试、运维等环节都有相应工具可供使用

关于文档

对于新人或者不熟悉项目的人来说,具有标注定义、关键描述、关键词、关联词和详细的文档是十分友好的

  • 需求和系统分析文档
  • 系统核心文档:模型、主体架构等
  • 用例文档
  • 开发团队文档
  • 接口信息文档
  • 。。。

程序员的工具箱

三个美德是懒惰、不耐烦和傲慢

开发工具、版本控制工具、画图工具

正则生成工具、转换类在线工具、检查类在线工具