如何学习新的编程语言
学习重点
重点是三个特性:
-
基本表达形式
- 基本语法、关键字、变量常量等
-
组合的方法
- 网络请求、数据处理、内置函数等
-
抽样的方法
- 开源类库、开源框架、底层原理等
学习方式
不同的学习方式适合不同的人
-
阅读书籍
- 相对完善且成体系
- 陌生的名词、定义等阻碍学习进度
-
课程、视频
- 偏向实践
-
翻阅源码—最重要
多练多实践,很多问题只有在实践中才会遇到,要去想办法解决
六何法
What、Who、When、Where、Why、How
问题驱动学习,加深理解
代码规范与测试、分析
规范是很重要的,约束、统一。
可以提高代码质量、可读性,降低维护成本
要有对应的测试单元去做代码在规范下的检查
测试驱动设计
- 无测试,不代码
- 单元测试不在多,能识别问题即可
- 代码不在多,能全通过单元测试即可
静态代码分析
仅通过分析代码的词法、语义、控制流等检查代码正确性,帮助查找结构性错误、不符合规范得房、安全漏洞等
分析工具
Checkstyle、FindBugs、P3C
代码审查
对代码进行系统审查、修正开发初期未发现的错误,提升质量。
主要通过开发者相互阅读来发现。
好处
- 提升代码质量、保证风格统一
- 相互学习的好机会
- 从另一角度审视自己代码
如何审查
审查清单
- 代码结构—重要
- 代码安全性
- 代码性能—重要
- 代码注释—重要
- 单元测试
- 代码优化—重要
审查工具
Phabricator、Gerrit、Code Striker
审查细节
- 通读改动处上下文代码,更好发现问题
- 日常进行代码审查
- 一次不审查太多、太久
清单和模板
清单必须简洁、直接、易操作。且尽可能融入日常流程中
产品需求模板,规范梳理产品内容、并根据情况修改
程序员工作法则
工具化法则
用于构建、处理特定问题,需要进行治理和统筹管理。
- 尽可能复用
- 开发插件化能力
- 根据情况分别建设
自动化法则
通过工具来完成重复工作,提升效率
在开发、测试、运维等环节都有相应工具可供使用
关于文档
对于新人或者不熟悉项目的人来说,具有标注定义、关键描述、关键词、关联词和详细的文档是十分友好的
- 需求和系统分析文档
- 系统核心文档:模型、主体架构等
- 用例文档
- 开发团队文档
- 接口信息文档
- 。。。
程序员的工具箱
三个美德是懒惰、不耐烦和傲慢
开发工具、版本控制工具、画图工具
正则生成工具、转换类在线工具、检查类在线工具