in

ASP.NET Weblogs

This Blog

Syndication

ASP.NET Chinese Blogs

May 2006 - Posts

  • 使用NBear.MQ分布式服务消息队列模块开发分布式系统

    摘要:NBear.MQ是NBear Framework中新增的分布式消息队列模块,作为NBear Framework的新成员,NBear.MQ秉承NBear一贯的易于使用和零配置需要的特点,大大改善开发基于消息队列的分布式系统的效率。本文通过介绍一个基于NBear.MQ的Sample - TestServiceMQ,演示基于NBear.MQ开发分布式系统的基本方法。 阅读全文 。 Teddy's Knowledge Base 2006-05-31 15:56 发表评论 Read More...
  • Refactoring -- Code Complete reading notes

    重构--在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改 原因: 1、代码重复 2、冗长的子程序 3、循环过长或嵌套过深 4、内聚性太差的类 5、类的接口未能提供层次一致的抽象 6、拥有太多参数的参数列表 7、类的内部修改往往最局限于某部分 8、变化导致对多个类的相同修改 9、对继承体系的同样修改 10、case语句需要做相同的修改 11、同时使用的相关数据并未以类的方式进行组织 12、成员函数使用其它类的特征比使用自身类的特征还要多 13、过多使用基本数据类型 14、某个类无所事事 15、一系列传递流浪数据的子程序 16、中间人对象无事可做 17、某个类同其它类关系过于亲密 18、子程序命命不恰当 19、数据成员被设置为公用 20、某个派生类仅使用基类的很少一部分成员函数 21、注释被用于解释难懂的代码 22、使用了全局变量 23、在了程序调用前使用了设置代码,或在调用后使用了收尾代码 24、程序中的代码似乎是在将来的某个时候才会用到 数据级的重构: 用具名常量代替神秘数值 使变量名字更为清晰,传递更多的信息 将表达式内联化 用函数来代替表达式 引入中间变量 用多个单一用途变量代替某个多用途变量 在局部用途中使用局部变量而不是参数 将基础数据类型转化为类 将一组类型码转化为类或枚举类型 将一组类型码转换为一个基类及其相应派生类 将数据转换为对象 把群集封装起来 用数据类来代替传统记录 语句级重构: 分解布尔表达式 将得很要的布尔表达式转换成命名准确的布尔函数 合并条件语句不同部分中的重复代码片段 使用Break/return代替循环控件变量 在嵌套的If-then-else语句中一旦知道答案就立即返回,而不是去赋一个返回值 用多态来替代条件语句 创建和使用null对象而不是去检测空值...
  • Debugging -- Code complete reading notes

    把错误稳定下来 如果错误只是时不时地出现,那么几乎没有可能找出它发生的原因 THIN 2006-05-29 22:59 发表评论 Read More...
  • Developer testing -- Code complete reading notes

    开发人员测试方法:单元测试、组件测试、集成测试、回归测试、系统测试 其他人员测试方法:beta测试、客户验收测试、性能测试、配置测试、平台测试、压力测试、易用性测试 测试的目标是找出错误 不可能彻底证明程序无错 本身不能改善程序质量 要求测试者假设存在问题 开发者测试占用时间应该在整个项目时间8%~25% 方法: 针对需求、设计关注点测试、基础测试、数据流测试、使用检查表 测试先行: 先写测试用例迫使你思考一下需求和设计,能更早的把需求上的问题暴露出来,针对糟糕的需求写测试用例是一件困难的事性。 开发者测试的局限性: “干净测试”,程序员喜欢检查代码能否正常工作,而非失效 开发者测试对覆盖率有过于乐观的估计 “100%语句覆盖率”而不是“100%分支覆盖率”--对每个分支至少测试一个正值和一个否值 需要多少测试用例 直路为1,遇到分支,每个加1 数据流测试 猜测错误 测试数据本身的错误 THIN 2006-05-28 18:42 发表评论 Read More...
  • Collaborative construction -- Code complete reading notes

    Why? 协同构建是其他质量保证技术的补充 协同构建有利于传授公司文化以及编程专业知识 各人优点的集合 个人离开的代价更小 缺陷修正可以指派任何一个人 How? 构建前后都应该保持协作 结对编程 用编码规范支持结对 不要让结对编程变成旁观--分析代码、提前思考下一步、对设计评估、对如何测试做出计划 在简单问题上可不强求结对 进行轮换 鼓励双方跟上对方的步伐 避免新手组合 指定一个组长 正式检查 关注过去发现的问题 关注检测而非修正 做好准备,准备发现问题列表 主持人不是作者 高层不参与 人员角色:主持人、作者、评论员、记录员、经理 步骤:计划、概述、准备、会议、报告、返工、跟进 走查(三三两两的小会议) 作者主持 关注技术 关注错误而非修正 经理不参加 代码阅读 4000行代码、两个以上的评论员、评价评论员的贡献 公开演示 结对和详查的成本相同,产生的效果也差不多,开发周期短时,可以选择结对。 THIN 2006-05-28 17:54 发表评论 Read More...
  • The software-quanlity landscape -- Code complete reading notes

    软件同时拥有外在和内在的质量特性,外在质量指用户所能感受到的部分。 外在质量:正确性、可用性(使用容易)、效率、可靠性、完整性(限制权限、访问正确性)、适应性、精确性、健壮性 内在质量:可维护性、灵活性、可移植性、可重用性、可读性、可测试性、可理解性(内在一致性) 改善质量的技术: 软件质量目标 明确定义质量保证工作 测试策略 软件工程指南 非正式技术复查(桌面检查、代码走查) 正式技术复查(质量门,以确定走出下一里程碑) 外部审查 开发过程: 对变更进行控件的过程 结果的量化 制作原型,开发出一部分用户界面的原型可以判断出系统的可用性,开发出关键算法的原型可以确定功能的执行时间,开发出典型数据集的原型能知道程序的内存需求。 检查比测试的成本更小: 非正式设计复查、正式设计检查、非正式代码复查、正式代码复查、建立模型或原型、个人桌面代码检查、单元测试、新功能测试、集成测试、回归测试、系统测试、小规模Beta测试、大规模Beta测试 对所有的需求、架构以及系统关键部分的设计进行正式检查 建模或者创建原型 代码阅读或者检查 执行测试 THIN 2006-05-28 17:16 发表评论 Read More...
  • Table-Driven method-- code complete reading notes

    表驱动代替复杂的逻辑和继承结构 三种表访问法:直接访问、索引访问、阶梯访问 THIN 2006-05-27 22:40 发表评论 Read More...
  • Statements -- Code complete reading notes

    在while和do...while结构中考虑使用安全计数器,递归中使用安全计数器 递归应限定在一个子程序中 递归速度慢,无法预测运行中使用的栈内存,难懂 不要使用float做为循环下标和边界 使用由内而外的方法创建循环 仅在为了增强可读性和可维护性的情况下使用goto 所以的goto都向前跳 THIN 2006-05-26 22:59 发表评论 Read More...
  • URL处理两个小工具方法

    摘要:有的时候我们要操作一个URL地址中查询参数,为了不破坏URL的原有结构,我们一般不能直接在URL的后面加&query=value,特别是我们的URL中有多个参数时,这种处理更麻烦。 下面两个小方法就是专门用来为一个URL添加一个查询参数或删除一个查询参数,这两个方法隐藏了原URL有无参数,是不是原来就有这个参数,有没有fragment(#anchor)这些细节和处理 ==>这两天好像大家都不往首页上放文章,所以这样的小东东也放一下…… 阅读全文 。 THIN 2006-05-25 13:08 发表评论 Read More...
  • Nikhil Kothari的Script#

    用服务器端语言写客户端脚本已经成为趋势了 RJS 允许你使用Ruby来编写客户端的脚本, Google Web Toolkit 使用Java,Nikhil Kothari的Script# 允许你使用C#来写客户端的脚本: http://www.nikhilk.net/Entry.aspx?id=121 他的Script# 编译器生成的不是IL,而是Javascript, 这可以极大地简化开发AJAX类的应用。 在 这个10分钟的录像 里,Nikhil Kothari演示了怎么使用Visual Studio 2005和Script#做一个简单的AJAX调用,Cool! 他有一个原型可以下载: http://www.nikhilk.net/Content/Samples/ScriptSharp.zip Read More...
More Posts Next page »