18.3 "Hello World"开发计划

上一章从Github[1]上检出的hello-world包含了一个C语言开发的应用,现在假设项目hello-world做产品发布,版本号定为1.0,则进行下面的里程碑操作。

(1)为hello-world创建里程碑v1.0。


$cd/path/to/user1/workspace/hello-world/

$git tag-m "Release 1.0" v1.0


(2)将新建的里程碑推送到远程共享版本库。


$git push origin refs/tags/v1.0

Counting objects:1,done.

Writing objects:100%(1/1),158 bytes,done.

Total 1(delta 0),reused 0(delta 0)

Unpacking objects:100%(1/1),done.

To file:///path/to/repos/hello-world.git

*[new tag]v1.0->v1.0


到现在为止还没有运行hello-world程序呢,现在就在开发者user1的工作区中运行一下,具体操作过程如下。

(1)进入src目录,编译程序。


$cd src

$make

version.h.in=>version.h

cc-c-o main.o main.c

cc-o hello main.o


(2)使用参数—help运行hello程序,可以查看帮助信息。

说明:hello程序的帮助输出中有一个拼写错误,本应该是—help的地方写成了-help。这是有意为之。


$./hello—help

Hello world example v1.0

Copyright Jiang Xin<jiangxin AT ossxp DOT com>,2009.

Usage:

hello

say hello to the world.

hello<username>

say hi to the user.

hello-h,-help

this help screen.


(3)不带参数运行,向全世界问候。

说明:最后一行显示版本为"v1.0",这显然是来自于新建立的里程碑"v1.0"。


$./hello

Hello world.

(version:v1.0)


(4)执行命令的时候,后面添加用户名作为参数,则向该用户问候。

说明:下面在运行hello的时候,显然出现了一个Bug,即用户名中间如果出现了空格,输出的欢迎信息只包含了部分的用户名。这个Bug也是有意为之。


$./hello Jiang Xin

Hi,Jiang.

(version:v1.0)


既然1.0版本已经发布了,现在是时候制订下一个版本2.0的开发计划了。计划如下:

多语种支持。

为hello-world添加多语种支持,使得软件运行的时候能够使用中文或其他本地化语言进行问候。

用getopt进行命令行解析。

对命令行参数解析框架进行改造,以便实现更灵活、更易扩展的命令行处理。在1.0版本中,程序内部解析命令行参数使用了简单的字符串比较,非常不灵活。从源文件src/main.c中可以看到当前实现的简陋和局限。


$git grep-n argv

main.c:20:main(int argc,char**argv)

main.c:24:}else if(strcmp(argv[1],"-h")==0||

main.c:25:strcmp(argv[1],"—help")==0){

main.c:28:printf("Hi,%s.\n",argv[1]);


最终决定由开发者user2负责多语种支持的功能,由开发者user1负责用getopt进行命令行解析的功能。

[1]https://github.com/ossxp-com/hello-world/