浅谈Delphi开发经验[2]
有经验的程序员完成特定的功能会充分考虑可变的情况 将这些地方提取出来 定义为方法参数或者从配置文件中读取 这样即使需求发生变化 也能轻松应对 要写出易维护的程序应该在软件配置化和程序动态化上下功夫 特别提一提程序动态化 现在开发网络游戏的很多 而且一般都会用到脚本引擎Lua来实现部分逻辑 这样在开发后期的调整相对变得轻松一点 以后在服务器上做修改也不会要求重新启动程序 当然在一般的项目或产品中一样可以考虑使用脚本引擎 当然不一定要用Lua 还可以有很多别的选择 比如 DelphiWebScript RemObjects Pascal Script AUTOMA atPASCAL SCRIPTER FastScript Innerfuse Pascal Script 如果还有更高的要求 还可以考虑利用COCO/R (ParserBuilder)来实现自己的语法解析器
开发中通常会遇到自己不能解决的问题 要知道你遇到的问题别人可能早就遇到过并解决 因此请教他人或者请教Google通常是最好的选择 上论坛提问是没有效率的方法
控件开发
控件分为不可视控件与可视控件 不可视控件其实与一般的类没什么太大的区别 只需要公布需要公布的属性为Published 如有需要也可以设计并注册自己的属性编辑器
开发控件也有专业的开发工具Eagle CDK和Eagle reAct 您不仅可以很方便的创建类 还可以在运行期测试控件 可以很方便的修改属性 即时看到效果 大大提高了开发效率
软件破解
愈来愈多的开发者开始采用RSA来作为注册的加密算法 效果还算不错 虽然仍不能防止被爆破 但是至少不会出现(内存)注册机 对软件加壳也不是什么防弹衣 对于有经验的破解者几分钟就可以用OllyDbg从内存Dump(先用Process Explorer杀掉屏蔽调试工具的线程) 接着就是用Import REConstructor修复IAT 再用Lord PE对EXE进行优化
DeDe可以让破解者看到程序内的资源 事件 既可以静态分析 也可以在OllyDbg中对分析出的地址进行动态调试
破解Delphi控件当然也可以用DeDe 但是我们有更好的选择 那就是DCUcu与Dcu Pas 可以将Dcu直接反编译成汇编代码 通过静态分析其中的字符串以及调用的API 破解真的是很容易
只有做到知己知彼 才能做到有的放矢 反破解就是做到以最小的保护代价来使得破解者付出极大的破解行动
版本控制
版本控制最流行的就是VSS CVS SVN 我比较喜欢SVN 但是由于在Delphi下始终没有很方便的连接SVN的插件 因此 仍然是Delphi+VSS是最方便的版本控制的选择 VssConneXion是专门用于为Delphi增加VSS支持的插件 确实为开发人员带来了无比的便利 Delphi+TortoiseCVS与Delphi+TortoiseSVN同样也是不错的选择 VSS最大的缺点就是只能在内网中使用 除了可以透过VPN来允许远程访问外 我们还可以用Dynamsoft SourceAnyWhere或SourceOffSite实现VSS通过Internet访问 当然VSS 也支持Internet访问 如果你是个人开发者 觉得使用VSS也太麻烦 不妨试试FileHamster
软件测试
在提交给测试人员前 要求开发人员首先做自测 不要出现给测试人员的是一个都不能运行的版本 这样是对测试人员的不尊重
Java有JUnit Net有NUnit 同样Delphi也有DUnit 这主要是用来做单元测试用的 特别是在不停的代码重构中 能够及时发现修改出的问题 是每日构建中的重要组成部分 开发人员在完成功能前就写好测试用例代码 也称之为测试驱动开发 让自己作为自己代码的第一个用户 以确保自己提交的代码是易用的 正确的 让测试人员更专注于发现那些隐藏的逻辑性错误
TestComplete是AutomatedQA出品的专业自动化测试工具 与Rational Robot和Mercury WinRunner相比 特别适合用于Delphi开发的程序的测试 自动化测试可以减轻测试人员的工作量 提高他们的测试效率 当然 采用自动化测试对于测试人员的要求就更高了 因为需要测试人员维护测试脚本
缺陷管理
测试人员的报告需要反馈给开发者 同时又要知道开发者的修改意见 上级主管需要知道当前的测试进度与修改情况 这一切都是需要缺陷管理系统所管理的 通常缺陷管理都是做成B/S系统 当然也有提供客户端的 JIRA Mantis Bugzilla Axosoft OnTime Axosoft PowerTrack Bug Tracker BugFree Dev Hound SourceGear Dragnet TestTrack Pro URTracker 同样有很多选择
lishixinzhi/Article/program/Delphi/201311/24782