软件开发艺术

软件开发为什么可以称之为艺术?只有真正从零开发过一个软件,并且经历过软件完整的生命周期,才能体会到其中的奥秘吧。

万事开头难,想想看上学那会写一篇作文,开头部分总是最难写的。往往过了很久,才吭哧吭哧崩了几个字出来。从零开始写软件也是这样。打开电脑,盯着屏幕,不知道从哪里下手。有经验的程序员往往会先做足前期准备。

1. 需求

和PM开会讨论,确定软件的需求。

2. 编写软件架构

可以用你喜欢的工具把软件架构图画出来。我倒是发现用思维导图来画也是个不错的选择。这部分往往包含了软件由哪几个模块组成,每个模块的具体功能是什么。

3. 选择技术栈

3.1 GUI

GUI是用WPF还是QT?你需要权衡是否有跨平台的需求。如果需要跨平台,那么QT是一个不错的选择。但是最终使用哪个GUI框架是一个复杂难决的问题。比如,要考虑团队成员的技能熟练度,开发的时间成本,是否有未知的风险(坑)等。这种时候老板往往有一票否决权。保守的老板会倾向于选择风险最小的方案。

3.2 跨平台

底层组件是否需要跨平台?如果需要的话,那么就需要考虑使用哪种编译工具,是CMake还是其他?使用的第三方库也会优先选择可以跨平台的,比如:Boost,OpenCV等。平台相关的代码则需要用条件编译做特殊处理。

3.3 搭框架

如果你需要和别人一起协作来开发这个项目,那么你们最好有一份代码规范。如果大家不能达成一致,那会是一件很痛苦的事情。杂乱的质量参差不齐的代码从一开始就会埋下祸根。所以如果可以,我宁愿一个人写。要知道沟通的成本是很高的,况且程序员都是一群高傲的猴子。当然,如果你们的团队里面有一个类似于主程序或者架构师之类的大牛,提前把软件的框架搭好,那也是一种不错的选择。

3.4 日志系统

不管是使用第三方开源的Log系统,还是自己写一个出来,这都是一个必选项。没有Log的程序对于改BUG的程序员是一场灾难。

3.5 错误处理

采用哪种错误处理方式?给出几条参考意见:

  • Windows平台相关代码使用返回值HRESULT
  • 性能不敏感的业务代码使用异常处理的方式。
  • 性能敏感的代码,一般是最底层算法的实现模块,采用返回错误码的方式。

4. 写代码

到了这一步,终于可以开始写代码了。先把每个组件的工程创建出来,给命名空间起一个帅气的名字。然后就需要思考,需要定义哪些类?每个类之间的关系是什么?是继承还是组合?类的接口怎么设计?名字怎么起?采用哪种数据结构最高效?等等。需要考虑的实在是多。
等到费了九牛二虎之力,软件的雏形终于慢慢显现。兴奋感,成就感,随之而来。你高兴的像个小孩子,快乐的和周围的人分享着你成功的喜悦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superbin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值