有一次 Kevlin Henney 在检查代码中的疏漏,发现自己不知不觉地在嘀咕“该死的,这是每个程序员都需要知道的事情!”(当然了,一开始的感觉是非常强烈的),这就是 Kevlin Henney 发起“每个程序员都需要知道”的活动的灵感。“程序员需要知道的 97 件事”是由众人群策群力并发布到 wiki 上,大家可以对其进行编辑,然后从中选取 97 个条目做出图书出版。
这 97 条每条都是对作为软件开发程序员的必修知识,就算你不是非常了解这 97 条里每条包含的具体知识,但只要看着这简短的标题,相信也应该有是曾相识的感觉。
那么,究竟这 97 条里你都知道那些呢?
- 谨慎行动
- 函数式编程原则的应用
- 试问自己“用户会怎么做?”(你不能算是用户)
- 编码标准的自动化
- 美在于简单
- 重构
- 谨防共享
- 童子军规则
- 在责备别人之前先检查自己的代码
- 谨慎选择你的工具
- 领域语言里的代码
- 代码就是设计
- 代码布局风格
- 代码审查
- 编写代码的理由
- 对注释的一个注释
- 代码说不清,注释来补充
- 不断学习
- 易用不是一种能力
- 早部署,常部署
- 区分业务异常和技术异常
- 有针对性地勤加练习
- 领域特定语言
- 不要怕搞砸
- 不要在你的测试代码里装可爱
- 不要忽略任何错误
- 不要只学习语言,还要了解它的文化内涵
- 不要把程序钉死在老地方
- 不要指望“魔法会在此发生”
- 不要重复你自己
- 别碰那些代码!
- 封装行为,而不仅仅是状态
- 浮点数不是真正的数
- 开源助你实现雄心壮志
- API 设计的黄金法则
- 高手神话
- 加班加点,事倍功半
- 如何使用 bug 跟踪器
- 代码的去芜存菁
- 安装我吧
- 进程间通信对应用程序响应时间的影响
- 保持构建的整洁
- 知道如何使用命令行工具
- 通晓两门以上编程语言
- 了解你的 IDE
- 了解你的局限性
- 知道你下次提交的内容
- 大型、相关联的数据属于数据库
- 学习外语
- 要学会估算
- 学着说“Hello,World”
- 让你的项目能表达它自己
- 链接器(Linker)并不神秘
- 临时解决方案的寿命
- 使接口易于正确使用,难于错误使用
- 让不可见的更加显眼
- 在并行系统中使用消息传递可获得更好的伸缩性
- 带给未来的消息
- 错失采用多态的机会
- 奇闻轶事:测试人员是你的朋友
- 二进制文件仅此一份
- 有代码有真相
- 拥有(以及重构)构建脚本
- 结对编程,感受流程
- 特定领域类型胜过原始类型
- 预防错误
- 专业程序员
- 把一切都置于版本控制之下
- 放下鼠标,远离键盘
- 阅读代码
- 读懂人性
- 经常重新发明轮子
- 抗拒单子模式的诱惑
- 通向高性能之路布满了脏代码炸弹
- 简单来自于删减
- 单一职责原则
- 从 Yes 开始
- 请转回去做自动化、自动化、自动化
- 充分利用代码分析工具
- 为必需行为测试,而不是偶发行为
- 测试要严密而具体
- 在睡觉的时候(或者度周末的时候)进行测试
- 软件开发的工程严密性来自测试
- 关于状态的思想
- 一人计短,二人计长
- 错上加错就是貌似正确(并且难以纠正)
- 我写代码为人人,人人为我写代码
- Uinx 工具是你的好朋友
- 使用正确的算法和数据结构
- 冗长的日志会让你睡不安枕
- WET 掩盖了性能瓶颈
- 当程序员和测试人员开始合作的时候
- 编写代码时要像余生都要给它提供支持一样
- 使用实例编写小函数
- 测试为人而写
- 你应该关心你的代码
- 客户心口不一
作为程序员,一件都不知道,这是不可能的,或者如果你不是程序员,那就另当别论了。