06 2012 档案
摘要:在撰写程序的时候,错误处理是一件很重要的事情。在「C++编程规范」这本书的第71个条款里,依照不同的错误处理结果,定义出三种「安全保证」等级: No-fail保证、Strong保证、Basic保证。这三种安全保证等级以执行方法遇到错误并且处理之后,是否会影响到数据或状态来做等级区分。开发人员在撰写每个方法之前,先决定方法的错误处理是属于哪个等级,可以减少思考的范围、避免一些不必要的过度设计。No-fail保证所谓的「No-fail保证」是说:执行方法一定成功、不会发生异常。在系统里有些方法,必须设计为提供No-fail保证等级,例如:解构子、资源释放、Log纪录…等等。这些方法通常会在错误处理
阅读全文
摘要:今天去面试,面试官希望我多聊一些有关架构设计,当场回答了一些部落格上分享的架构模式。回家的路上,认真的思考了这个问题:「架构设计是做甚么?」对我来说,架构是用来处理软件系统上的各种非功能性需求。不管是增加系统的扩充性、降低开发人员的最低能力、减少维护人员的负担,都是架构设计该处理的问题。以部落格上写过的架构模式来说:「Database Migration」抽象化数据库部属升级,减少维护数据库的成本。「Repository」抽象化系统储存装置,增加系统可移植性。「Device Projection」抽象化设备管理功能,聚焦开发人员的思考逻辑。这些架构模式,处理各种面向的问题,内容包山包海。但能.
阅读全文
摘要:接续...[Architecture Pattern] Database Migration (上)实作范列下载实作说明请参照范例程序内容:DatabaseMigrationSample点此下载范列实作首先建立封装数据库更新逻辑的DatabaseUpdater,以及定义DatabaseUpdater会使用到的各个接口。执行DatabaseUpdater的Update方法,系统会依照数据库更新逻辑,执行对应的DatabaseUpdatePlan。并且反复执行,直到数据库版本为目前DatabaseUpdatePlan能更新的最新版本。public interface IDatabaseVersio
阅读全文
摘要:动机在软件项目的生命周期里,每次做软件版本的修改,难免会去修改到数据库的Schema。针对这种数据库版本的变更,一般的做法会在版本控制系统(SVN)里,存放生成数据库的SQL脚本文件案。在每个软件版本的释出时间点,开发人员会依照当时的数据库,建立数据库生成SQL脚本文件案并存入SVN。这样安装人员只要取得SVN某个软件版本的执行文件,以及对应版本的数据库生成SQL脚本文件案,就可以为客户完成安装部属的工作。这样的架构模式,遇到旧版本系统要升级为新版本系统的时候。安装人员会需要:将旧版本的数据保留、建立新版本数据库、将旧版本的数据汇入新版本系统数据库。完成这些升级数据库的系统操作,需要一定程度的
阅读全文