- 博客(7)
- 收藏
- 关注
原创 《代码整洁之道》(13)并发编程
“对象是过程的抽象,线程时调度的抽象。”——James O Coplien为什么要并发? 并发是一种解耦策略。它帮助我们把做什么(目的)和何时(时机)做分解开。解耦的目的和时机能明显地改进应用程序的吞吐量和结构。从结构角度来看,应用程序看起来像是许多协同工作的计算机,而不是一个大循环。并发防御机制:(1)单一权责原则SRP(2)推论:限制数据作用域(3)推论:使用数据复本(4)推论:线程应尽可...
2018-06-01 16:18:02
326
原创 《代码整洁之道》(12)迭进
Kent Beck简单设计的四条规则:(1)运行所有测试:全面测试并持续通过所有测试的系统,称为可测试系统,遵循有关编写测试赛并持续运行测试的简单、明确规则,系统就会更加贴近OO低耦合高内聚的目标。(2)不可重复;(3)表达了程序员的意图。做到有表达力的最重要方式是“尝试”(不断调整) (4)尽可能减少类和方法的数量。以上规则重要性从上到下。...
2018-05-29 16:02:49
387
原创 《代码整洁之道》(11)系统
“复杂要人命。它小莫开发者的生命,让产品难以规划、构建和测试。”—— Ray Ozzie 整洁的代码可以帮助开发团队在较低层的抽象层级上达成这一目标。 本节是关于如何保持较高层级——系统层级——上保持整洁。将系统的构造和使用分开: 例子:酒店在建设时,使用起重机和升降机,而在酒店投入使用时,起重机和升降机就消失无踪,建筑物变得整洁。 软件系统应将启始过程和启始过程之后的运行时逻辑分离开...
2018-05-29 16:02:08
887
原创 《代码整洁之道》(10)类
类的组织:(1)标准的java约定:类由一组列变量开始(公共静态常量、私有静态变量、私有实体变量),很少有公共变量。 然后是公共函数,把由某个公共函数调用的私有工具函数紧随在该公共函数后面,这符合了自顶向下原则。(2)封装类应该短小: 函数:通过代码行数衡量大小 类:通过权责来衡量 —— 单一权责原则(SRP) 类的名称应该描述其权责,类名正是判断类的长度的第一个手段。...
2018-05-06 11:03:56
380
原创 《代码整洁之道》(9)单元测试
TDD三定律: 定律一:在编写不能通过的单元测试前,不可编写生产代码。 定律二:只可编写放好无法通过的单元测试,不能编译也不算通过。 定律三:只可编写刚好足以通过当前失败测试的生产代码。保持测试整洁: (1)脏测试=没测试 (2)测试代码和生产代码同等重要 (3)测试的好处:使代码可扩展、可维护、可复用整洁的测试: 整洁测试的要素:可读性(明确、简洁、足够的表达力,但也要和生产代...
2018-05-04 19:30:12
311
原创 《代码整洁之道》(7)错误处理
错误处理和整洁代码的关系:错误处理如果扰乱了代码的逻辑就是错误的做法。雅致地处理错误代码的一些技巧和思路:(1)使用异常而非返回码;(2)在编写可能抛出异常的代码时,先写try-Catch-Finally语句;(3)使用不可控异常:C使用可控异常的代价是:违反“开放/闭合原则”。对于一般性 应用开发,其依赖成本要高于收益;(4)给出异常发生的环境说明:应创建信息充分的错误消息,并和异常一起传递出去...
2018-05-02 20:07:26
418
原创 算法:一个NP问题的证明(课后习题)
问题描述:课后习题8.10:利用推广的方法证明NP-完全性。对以下每个问题请通过证明它是本章某个NP-完全问题的推广说明它是NP-完全的。(a)子图同构:给定两个作为输入的无向图G和H,判断G是否为H的一个子图(即删除H中的某些顶点或边后,所得的新图最多只 需再修改某些顶点的名称,即可与G相同),且如果是,返回由V(G)到V(H)相关映射。(b)最长路径:给定图
2017-06-25 20:38:34
4423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人