英文原文:14 lessons after five years of professional programming
以下是我的多年编程经验总结,下列排序无特定顺序:
1. 当性能出现问题的时候,最好能在应用层处理和解决,尽量不要把它放到数据库层里去。
排序和分组就是典型例子。在应用层做性能提升总是比在数据库层做要来得容易的多。对于这点,不管是服务器端的 MySQL 数据库还是移动设备端的 sqlite 数据库都是如此。我可以来解释一下:我们对一些特定的查询应用以上的方法虽然不能减少客户端的响应时间,但是可以减缓数据库服务器的压力,避免数据库成为所有客户端的瓶颈。
2. 尽可能地避免并发计算。
如果实在没法避免,那么记住,功能越强,程序就会越复杂。尽量避免直面线程。并且尽可能的在更高层次的抽象层上处理问题。举个 iOS 系统的例子:GCD、分派和队列操作绝对是我们可爱的好助手。相信我,人脑是不具备推理暂存的无限情形这一功能的——这是我亲身经历的惨痛教训给予我的第一手资料。
3. 状态越少越好,最好保持局部化。实用至上。
4. 短小又可自由组合的方法是我们的得力助手。
5. 注释有时候是有害的。
因为随着时间的流逝,它会变得过时然后误人子弟,但是如果不注释同样是不可取的。不要啥鸡毛蒜皮的小事都拿来注释,好钢要用在刀刃上,如果有必要,我们甚至需要大段大段地写下战略性的长篇注释以备不时之需。因为,有时候记忆是个超能忽悠人的东西,搞不好你一觉醒来,甚至仅仅只是去喝了一杯咖啡回来,就忘记了。
6. 不要妄自猜测
如果你觉得某个用例场景”应该不会有问题的吧“,那么可能过不了多久它就会大发淫威,成为发布产品中让你遭受惨痛教训的原因。相信自己的直觉,不要图省事就放任有疑问的地方不管,得主动测试、积极验证。
7. 如果有疑问的话,将所有顾忌与团队交流沟通。
8. 做正确的事——地球人都知道。
10. 如果一个开发人员不被分派到维护系统(参与创建的)的团队中去,不能查看他们的猜想,那么他们曾经在这个系统上面付出的心血和汗水将会付之东流、化为乌有,而这时却发现了一些问题又需要参与进去——不要喊苦喊累,不要怨天尤人,你可知道这可是在成为一个更为睿智的专业程序员的节奏?
11. 任务清单会是我们的好搭档。
12. 积极主动让我们的工作更有趣,但是这需要努力。
13. 突如其来的系统崩溃,仍然是我的噩梦。做好监控、日志和警报。清楚各种假警报,避免感觉钝化。保持系统对故障的敏感度和及时警报。
14. 最后,别忘了我们是”拿人钱财,与人消灾“的,管理各种复杂的问题,做好相应的工作。
*注:Rich Hickey 的讲座和 Robert Martin 的《Clean Code 》一文给了我很多启发。
译文链接:http://news.html5tricks.com/coding-experiance.html
翻译作者:IT 新闻 – 蒋丽丽