项目管理资源网

您的位置:项目管理资源网 >> IT通信项目管理

小软件开发心得(一)——需求、开发

2011/1/13 10:25:59 |  6090次阅读 |  来源:博客园   【已有0条评论】发表评论

取播放数据到播放乃至展现上的各种功能各种问题了。但由于这层Flash的封装,导致很多东西无法直接被我的代码控制,于是就得另辟蹊径。

比如“豆瓣电台”的Flash上有几个按钮,分别对应几种操作。为了能用快捷键实现同样的操作,就需要调用Windows的API,模拟发送点击按钮的消息。而在实践中我又发现当程序最小化时,模拟发送的消息不起作用,应该是最小化时窗口异化了,不恩那个再根据正常大小的坐标发送消息,为了解决这个问题,我又重新实现了窗口最小化的表现,把窗口以正常状态挪到了屏幕外侧而不是真正的最小化。

再比如播放的数据,关于歌曲的一切信息都是由Flash接收的,除非监听网络,否则无法获得这些原始数据,而监听的话效率又太低,过滤干扰数据也不容易,于是我就用各种方法来获取这些原始数据。比如歌曲名会同时更新到Flash所在网页的标题上,我就处理浏览器的TitleChanged事件;再比如“豆瓣电台”有个标明是否喜欢当前歌曲的逻辑,这个“是否喜欢”当然是在我得不到的源数据里面,但它会在界面上表现出来——喜欢就是“红心”,不喜欢就是“灰心”,那我就获取心所在坐标的颜色,红色就是“喜欢”,灰色就是“不喜欢”。

这些Hack的方法,有些是能从网上搜到的,有些就得靠自己的经验甚至是灵机一动想出来的了,正所谓“条条大路通罗马”,如果正路走不通,找找偏门也许还能更快达到目的。

版本管理

这里说的不是代码的“Version Control”,而是软件本身的版本管理。如果软件不给别人用,自然不用考虑什么版本,编译-》覆盖就好了。但如果要发布出去,版本就是必须的了,除非你就做一锤子买卖。

版本的定义其实按照自己喜好来就好了,VS里面有一套按照编译次数来定义的规则,此外还有什么“单数内部,双数发布”之类的规矩。不过我个人喜欢用发布日期来定义版本,这样简单好记,而且让用户一看就知道需不需要更新。

比较麻烦的是怎样提示用户更新。最简单的当然是在网上发个帖子,说“我更新啦”,但这样当然不大靠谱。还有一种简单还比较靠谱的办法,就是随便找个网络空间,上传一个文件,在里面添加版本信息,最好再加上些更新介绍什么的,每次程序启动的时候读取这个文件,来提示用户更新,当然还要把用户导向你的下载页面。更高级的自然是用户不用手动下载,自动更新+自动安装+自动重启或者提示重启,这就看起来比较成熟了。小软件嘛,我觉得第二种就挺好,因为简单,而且本来程序就不大,下载也不会太麻烦。

插件扩展

一个软件,越做肯定是越复杂的,功能越来越多,操作越来越繁琐。KISS原则很好,但当你面对用户们勤劳的申诉,热情的邮件,渴望的留言时,你又怎能无动于衷,而且往往添加一个新功能并不是困难的事情。

于是当你花了一个下午把用户的需求统统满足然后更新,满心期待用户的感谢与赞美的时候,却发现人们开始抱怨“怎么这么多乱七八糟的功能?”“太臃肿了!”“我要原来那个简洁的版本!”

然后你就迷茫了,就困惑了,感慨一声“真TMD难伺候”,然后把原来的简单版本打个包,再冠之以“简洁版”发布出来。

当有人跟你留言“你好,可不可以只添加这个功能就好了呢?”你差不多该疯了。

所以用KISS原则来架构程序的主体,然后再辅以插件系统,这才是解决问题的最佳方案。而.Net的反射机制,基本是为插件系统量身定做的,足够容易,足够方便,具体可以参见园子里的相关文章http://zzk.cnblogs.com/so.aspx?w=%E6%8F%92%E4%BB%B6%E7%B3%BB%E7%BB%9F&t=,这样大家各取所

    项目经理胜任力免费测评PMQ上线啦!快来测测你排多少名吧~

    http://www.leadge.com/pmqhd/index.html

“项目管理生根计划”
企业项目经理能力培养和落地发展方案下载>>

分享道


网站文章版权归原作者所有,如有认为侵权请联系我们,将于1个工作日内作出处理!
网友评论【 发表评论 0条 】
网友评论(共0 条评论)..
验证码: 点击刷新

请您注意护互联网安全的决定》及中华人民共和国其他各项有关法律法规或间接导致的民事或刑事法律责任
·您在项目管理资源网新闻评论发表的作品,项目管理资源网有权在网站内保留、转载、引用或者删除
·参与本评论即表明您已经阅读并接受上述条款