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