
获得徽章 16
- 【书名】:《程序员修炼之道》
【章节】:如何保持资源的平衡
【笔记】:程序中通常会使用各种各样的资源,而保持资源分配与释放之间的平衡是很重要的。文中给出了一些关于使用资源的建议:
1. 要有始有终,尽量让分配与释放在同一位置并一一对应。
2. 限定资源使用的范围,在离开范围时释放。
3. 需要分配一组资源时,释放资源的顺序应与分配资源的顺序相反。
4. 如果多次分配同一组资源,应该始终以相同的顺序分配它们,以减少死锁的发生。
5. 面向对象语言中可以利析构函数释放资源(Java中的finalize不能用于替代析构函数,它不可靠)
6. 支持异常的语言有两种选择保障资源正确释放:利用变量作用域或使用try-catch块的finally子句。(Java8的try-with-resources更好)
7. 编写封装器跟踪所有资源的分配与释放。展开评论点赞 - 【书名】:《程序员修炼之道》
【章节】:死掉的程序不会说谎、断言式编程
【读书笔记】:一旦发现不可能发生的事情已经发生,程序就不再可靠,放任异常的程序继续执行可能会造成更大的损失,因此,有时候需要让程序尽早崩溃。
不太明白文中“捕获再抛出”反例程序有什么争议点,这种做法明显没什么意义,对异常的“捕获再抛出”通常在需要为抛出的异常添加更详细的错误信息时使用,个人觉得这是一个很有用的技巧,这也并未违背文中给出的“原因”。
断言用于预防哪些不可能发生的事情,不应该使用断言代替真正的错误处理,另外,要特别注意断言的评估条件是否具有副作用,这很容易导致海森堡Bug(调试本身改变了被调试系统的行为)。最后,断言是很重要的错误检测机制,为其提供良好的错误处理逻辑(写入日志、上报错误)优于关闭断言。展开评论点赞 - 【书名】: 《程序员修炼之道》
【章节】:文本处理、工程日记
【读书笔记】:在《纯文本的威力》一文中,作者提到:纯文本相比其它二进制格式具有自解释与更加通用等特点,是保存"知识"的良好载体。处理纯文本无需特殊的工具,shell命令简单的脚本即可对其进行分析与处理,因此掌握一门文本处理语言(Shell、Python、Ruby)对于程序员来说是大有裨益的。
工程日记一文让我想到了最近正在玩的《荒野大镖客2》中亚瑟的笔记本,游戏中亚瑟会将自己旅途中的所见所闻所感一一记录下来,我想正是这样持之以恒的记录与时时反思,亚瑟才能在生命最后的最后从众多角色之中脱颖而出,实现自我救赎。回到我们工程师的角色,工程笔记可以为我们带来许多好处:1. 记录比记忆可靠。2. 抓住临时的想法。3. 像橡皮鸭一样帮助反思。展开赞过评论1