http://xy.scau.edu.cn/info/studentunion/bbsxp/ShowPost.asp?ThreadID=345 Ryan Bay翻译地很好,http://www.topcoder.com/wiki/display/tc/Component+Development+Tutorial 这是TopCoder源址。 这里,是我-iJuliet对Topcoder组件开发的理解哦,菜菜们一起来学习吧! 1. 只能使用C#和Java两种语言,我选择C#. 2. 所需软件 Microsoft .NET Framework v1.1: 开发平台可以自由选择,但之后提交的代码会在这个框架下测试哦。 NAnt: 执行可定制、可扩展的构建脚本的工具。我需要用它编译工程,并向TC提交代码。 NUnit: 一个框架,用它可以快速简洁地测试我的代码。 TC Code Documenter: 一个命令行工具,用来写API文档。 3. 选题并下载资料 http://www.topcoder.com/tc?module=ViewActiveContests&ph=113 从时间、难度、技术上看看有没适合的,找到后注册一下哦。注册就意味着你有权利去访问其他人提交的程序(当然是比赛结束后),并且可以加入组件开发人员论坛(绝大部分关于项目的交流和讨论都在此进行)。 在论坛里的开发阶段文档中,找到需要的开发包(.zip文件),里边有 /conf: 如果有的话,它包含的是组件的配置文件,有时还会包含所依赖组件的配置文件,或组件设计者写好的配置文件的例子。如果没有这个文件夹,而你的组件又用到了配置文件,你自己生成这个目录吧。 /docs: 包含组件当前的所有文档。有.zargo或.zuml格式的UML设计说明,需求和组件说明书等。 .zuml /.zargo 在doc 目录下,应该有一份UML 文档。它包含了组件中所有类和接口的定义。它将定义组件的所有、包括异常行为。 /lib: 包含所依赖的所有组件级别的库文件,不包括系统级别的哦。依赖的所有TCS组件也在这个目录下。 /src:包含所有源文件,也包括测试代码哦! /test_files: 包括组件测试过程中用到的全部文件。有测试所需的特殊配置文件、输入/输出样例、数据库方案和其它任何非编译文件。这个文件夹通常会包含设计者创建的样本测试数据。 /default.build: C#专有的,它是一个缺省的,可能未加配置的构建脚本。 4. 建好目录,配置构建脚本 建好目录哈,建议是proj/tc/proj_name 在default.build里修改NUnit的安装路径和库文件引用(如果你的项目需要额外库文件)就好。 5. 开发开始喽! 盯住/docs文件夹,尤其是类图和组件说明文档。 step1: 生成stubs并放在合适位置。 它是可编译的代码框架(各function body)。这些个占位程序刻画了组件的全部API,但并没有实现其内部逻辑哦。占位程序不是生出来(用Poseidon生成,找不着就跟PM索要)就能成功编译地,需要你核实并整理。组件代码都放在/src/csharp/main/目录下,我需要根据包名来组织我的源代码,如我的组件是Topcoder.Util.Tutorial.dll,那么我的源码路径就是/src/csharp/main/TopCoer/Util/Tutorial/.. step2: 通过构建脚本来构建我的组件。从命令行里运行构建工具,常用命令有。 compile: 把工程编译成一个功能完全的二进制单元(假设你的代码是正确的) compile_tests: 编译我的tests,依赖于compile的成功执行。 test: 执行tests,取决于成功的compile_tests. 执行完后,结果放在/log。 clean:删除/build内容,将所有编译过的代码和中间文件删掉 dev_submission: 打包。 如果组件占位程序编译不成功,可能是API或库文件的配置问题,应尽快修正。 step3: 文档,对于可用性、可维护性至关重要。编码同时就添加注释是好习惯哦! API文档:我需要对UML文档自动生成的API文档进行修改,C#是通过XML文档来注释的。所有的类、接口、方法和变量都必须具备文档。.NET会自动生成大部分XML文档,只需在声明前面键入///即可。而且,C#中不会对throws语句进行检查,但在API文档中注明该方法可能产生的异常是好习惯哦! 文档内容:解释组件的行为,非法输入及相应的异常行为。务必注明方法返回值,可能抛出的异常和所有参数。此外,每个类和接口都需要个概括性文档以解释其作用。 文档要求: 每个文件必须包含TopCoder 版权声明。 step4: 单元测试。 非private的方法和构造函数都要测,在合法状态和输入下的行为(包括极限情况),及在所有可测的出错情形下的异常行为。/src/tests。注意最后清空测试环境哦,让系统保持在测试前的状态!因它测试类和被测组件位于同一包或namespace下,单元测试可以访问具备包访问属性或者protected访问属性的类及其成员。
step5: 提交啦
执行dev_submission,生成压缩文件。除了组件,还需要包含单元测试成功执行的日志文件,conf/目录下的所有文件,test_files/目录下的所有文件。 6. 等着评审团打分并给出建议吧,不服可以申诉。。。 |