- 博客(14)
- 收藏
- 关注
翻译 39. 通过移除改进代码
通过移除改进代码 少即是多。老生常谈的话了,但有些时候它确实是真的。 我过去几周对我们的代码库的改进之一便是移除它里面的组件。 我们愿意遵循极限原则来编程,包括你不需要它(YAGNI,You Aren't Gonna Need It)。但我们免不了在有些地方会大失所望,人的天性使然。 我观察到了产品花费太长的时间执行某些任务,
2013-09-30 20:22:44 354
翻译 38. 如何使用Bug跟踪系统
如何使用Bug跟踪系统 不管你叫他们什么,bug(小错误),defect(缺陷),或者design side effect(设计副作用),总得和他们打交道。知道如何提交一个好的bug report以及在其中查看什么,是保持项目良好进展的关键技能。 好的bug report需要三点: · 如何重现bug,要尽可能精确以及这种场景下bug的出现频率
2013-09-30 16:59:24 589
翻译 37. 努力不一定有回报
努力不一定有回报 作为程序员,努力工作经常不会有回报。你也许能欺骗自己和同事相信你自己在办公室为项目投入了许多的时间,但事实却是工作得更少可能得到的更多,有时会多很多。如果你尝试每周集中精力并且“多产”达到30个小时以上,那可能工作太辛苦了,应该考虑减少工作负荷以增加效率、完成更多。 这个观点可能看起来不合常理,甚至可能引起争议,但它却是一个事实的直接结果:编程和
2013-09-25 20:36:17 550
翻译 36. 古鲁神话
古鲁神话 每个人在软件行业工作足够长时间后,都会听到这样的问题: 我遇到了一个XYZ的异常。你知道出了什么问题吗? 问这个问题的人很少去钻研可以分析问题的堆栈、错误日志或者任何上下文内容。他们似乎认为你是在不同的层次上操作,不需要对证据作分析,答案就会在你面前冒出来。他们认为你就是一个古鲁(译注:锡克教徒的师尊)。 从不了解软
2013-09-23 12:48:21 511
翻译 35. API设计的金科玉律
API设计的金科玉律 API设计是很困难的,特别是要大规模使用时。如果你正在设计的API有成百上千的用户,你就该考虑在将来怎样修改以及修改是否会破坏客户代码。另外,你还要想想API的用户是怎么影响你的。如果一个API类在内部调用了一个它自己的方法,你该记住用户可能会继承你的类并重写它,这可能导致灾难的结果。你没法修改那个方法,因为有些用户给了它不同的含义。你未来的内部实现的选择就
2013-09-23 12:45:52 769
翻译 34. 以开源来实现志向
以开源来实现志向 很可能你在工作中的软件开发并不能实现你大多数的软件开发的雄心壮志。你也许是在为一个大型保险公司开发软件,但你可能更喜欢在Google,Apple,Miscrosoft工作,或者为自己开启下一个重大产品的开发。对于你不在意的系统,你永远不知道软件开发应该去向何处。 幸运的是,这个问题有个答案:开源。现在已经有了成千上万的开源项目,其中很多都很活跃
2013-09-21 10:15:43 1181
翻译 33. 浮点数不是真实的
浮点数不是真实的 数学角度中,浮点数并不是“实数”,尽管它们在某些编程语言中叫实型数据,比如Pascal和Fortran。实数有些无限的精度因而是持续的、无损的;浮点数只有有限的精度,所以它们是有限的,像是“表现不佳”的整数,因为他们没有在范围内均匀分布。 举个例子,分配2147483647(最大的32位有符号整数)给一个32位float变量(记为x),打印
2013-09-20 11:34:13 1236
翻译 32. 封装行为,不只是状态
封装行为,不只是状态 系统理论中,处理巨大、复杂的系统结构时,包容是最有用的构造之一。软件行业中,包容或封装的价值已深入人心。程序语言的结构,如子程序、函数、模块、类等都支持包容了。 模块和包代表了大尺度的封装,而类、子程序和函数代表了更细粒度的。这些年来,我发现类看起来像是程序员最难正确应用的封装。一个有着3000行代码的主方法的类,或者仅有其原始属性的set
2013-09-20 11:12:24 624
翻译 31. 不要碰那块代码
不要碰那块代码 我们每个人都曾经经历过这种情况:你的代码转到登台服务器上作系统测试,测试经理回复你说她发现了一个问题,你的第一反应是“快,让我来修复,我知道哪里错了”。 往更大的方面说,不对的地方是作为一名开发人员,你认为你应该可以访问登台服务器。 大多数基于web的开发环境的体系可以这样划分: · 开发人员本地机器上的开发和
2013-09-14 18:26:13 628
翻译 30. 不要重复自己
不要重复自己 在所有的编程准则中,不要重复自己(Don't Repeat Yourself,DRY)可能是最基本的一个。 Andy Hunt和Dave Thomas在《程序员修炼之道》(The Pragmatic Programmer)中阐述了这个原则,成为了许多其它为人熟知的优秀软件开发实践和设计模式的基础。知道辨别重复、理解如何通过适当的实践和正确的抽象消除重复的程序员,可以
2013-09-12 12:28:59 1137
翻译 29. 别依赖“魔法”
别依赖“魔法” 任何的活动、进程或者学科,远观的话总是很简单。没有开发经验的管理者认为程序员的工作很简单,没有管理经验的程序员也同样认为管理者的工作很简单。 编程是一件部分人做的事,其最难的部分——思考,却是最不可见也最不易被外行们欣赏的。几十年来,已经有很多人尝试去除对这种有技巧的思考的需求了。其中最早的也是最难忘的是Grace Hopper为了让编程语言不那
2013-09-12 12:22:40 772
翻译 28. 不要将你的程序钉成竖直
不要将你的程序钉成竖直 我曾经写过一个恶搞的C++短文,在里面我讥讽地给出了如下的异常处理策略: 通过在代码中打入许多的try...catch结构,我们往往可以阻止程序终止。我们认为这种结果状态是“将尸体钉得竖直起来”。 尽管很草率,我却是真的在总结从悲惨经历夫人脚下学到的一课。 那是一个我们用C++自研的应用程序基础库,多年
2013-09-09 07:48:17 616
翻译 27. 不只是学语言,更要领悟其文化
不只是学语言,更要领悟其文化 上大学时,我必须学一门外语。那时我觉得自己英文已经很不错了,所以就选择了睡过三年的法语课。几年后我去突尼斯度假,那里的官方语言是阿拉伯语,由于曾经是法国殖民地,所以法语在这里用得也很广泛,英语则只在观光地带使用。由于我语言不通,只好仅限于在游泳池旁边读《芬尼根守灵夜》, James Joyce在语言形式上的杰作。Joyce对40多种语言的有趣的融合,
2013-09-07 11:13:47 796
翻译 26. 不要忽视错误!
不要忽视错误! 有天晚上我经过一条街去酒吧见一些朋友,我们曾经在一起喝过,急切地想再见到他们。匆忙中,我没有看路,被道路边缘绊了一下,结果摔倒在地。我想,好吧,谁叫你不注意,活该。 我的腿受伤了,但是我急着去见朋友,所以我爬起来继续前进。随着我走得越远,疼痛越发厉害。尽管我最初认为是撞击的原因,但很快我就意识到有地方出问题了。 但我仍然急着去酒
2013-09-02 19:57:47 705
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人