本文为学习章淼的《代码的艺术》学习笔记,收获颇多,特此记录。 详细内容请移步微信公众号“章老师说”。
消除一些误解
软件工程师!=码农
coding is not so easy
写好代码需要建立好的品味
一流代码的特性
正确和性能
可读和可维护
共享和重用
运维和运营
好的代码是多个环节共同的结果
需求分析和系统设计
需求分析:
定义系统/软件黑盒的行为(external what)
需求需要用精确的数字来进行刻画
系统设计:
设计系统/软件白盒的机制(internal how& why)
trade-off
接口
系统对外的接口,比系统实现本身还要重要
模块对外的函数接口
平台对外的API
系统间的通信协议
系统间存在依赖的数据
代码也是一种表达方式
软件的维护成本远高于开发成本
现在,代码主要是写给人看的
系统->子系统->模块->函数
模块
怎么切分模块是一个需要慎重考虑的事情
切分模块的角度:数据类模块/过程类模块
写程序要以数据为中心考虑
好的模块划分是软件架构稳定的基础
类/函数
函数的切分也很重要
函数描述的3要素:函数功能的描述,传入参数的描述,返回值描述。
函数的规模要足够的短小
函数的返回值3种类型:逻辑判断(True/False),操作型(成功/失败),获取数据型(有数据/无数据/失败)
函数:单入口单出口是一种推荐的方式
函数的段落 layout 注释,函数的命名。
系统
系统的可监测性 非常重要,需要有足够的数据收集。
数据和功能同等重要。
在设计和编码阶段就要考虑系统运营
修身
- [√ ] 学习—思考—实践
学习:书,开源代码
思考:学而不思则罔
实践:知行合一谓之善
努力建立学习的习惯和能力
所有重要的进步,都来源于失败和挫折的经历
- [ √] 知识—方法—精神
知识:知识变化快,过时也快。所以只学知识的人总感觉世界变化太快。
方法:分析问题,解决问题的能力才是最重要的
精神:自由精神,独立思想。Don’t follow。对完美的不懈追求。
- [ √] 基础乃治学之根本
读书已经成为一道鸿沟。
最后以章老师的一句话作为总结,也是最自己的警戒!
今天社会的鸿沟在哪里?在抖音!