当前位置:C++技术网 > 资讯 > 开发项目:我们是如何一步步做出一个项目的呢

开发项目:我们是如何一步步做出一个项目的呢

更新时间:2016-10-13 15:32:47浏览次数:1+次

    在文章《开发项目:我们是怎样开发一个项目的》中,我已全面介绍了软件开发的一个基本流程和细节。不过,对于新手来说,还是困难重重。
    在前面的整体的项目开发了解的基础上,我们在细化开发的过程。我们这里只是给定一个基本的开发情况,不代表全部,希望给完全没有概念的开发者一个参考。
    针对一个功能的实现,如果你一下子不知道如何实现,很正常。因为脑子里没有既定的套路,也就是没有开发经验。怎么办?需要记忆各种API函数,记住函数的作用,然后在开发时候选用吗?
    当然不是!不要去记忆API函数,只需要使用的时候熟悉就好了。API太多太多,你没法记忆。需要的话,可以查阅MSDN或者其他API文档,其实百度百科都有API函数说明。都是可以查阅的,更不用说其他专业的文档。那么你会说,我不知道用哪些函数呀。
    这其实不是问题。你这个想法也是我曾经的想法,我也想过去熟悉一遍API,以便开发的时候更加顺利。然而,我一直都没有真的去全面看过。那我是如何去实现各种功能的呢?如何选择API函数的呢?甚至说,有没有我需要的API函数呢?
    网络这么发达,你怕查不到吗?在开发一个之前没有开发过的软件的时候,几乎是探索一个全新的领域。不要说你API不熟了,很多背景知识都一问三不知。但是这些都不要紧。高手大神,即使在没有接触的领域里,花个几个小时,可以迅速从小白到基本了解水平,然后再多花时间,就可以超越有一两年开发经验甚至超过三五年开发经验的“专业人士”。这个得力于强大的网络,只要你想知道,你就可以知道。
    别天真的以为,在网上查资料来实现自己的功能感觉很Low,这是强大的一个必备基础,强大到无所不能的基础。你还觉得查资料实现功能很Low吗?
    具体的说,你对于一个功能的实现原理、基本步骤、使用的函数等都一无所知,没有关系,查!但是你至少知道,你需要做什么功能吧。相信你知道自己在做什么。你不懂这个功能的原理,谷歌百度输入“XXX功能的实现原理”。如果你不懂这个功能实现的基本流程,谷歌百度输入“XXX功能的实现基本流程”。一般在实现流程的介绍文章里,就会告诉你用些什么函数了。甚至一些人,都会将部分实现代码或者全部公开出来分享。
    在查询如何实现的过程中,通过大量的阅读别人总结的经验,解决的问题,你就可以对要做的功能有了比较多的了解。这个功能能不能实现、这个功能如何做、这个功能会用到哪些API函数、这个功能代码怎么写,基本是都能够查的比较清楚了。如果是难以实现,或者冷门的技术或者压根就无法实现的,你可能就看到各种提问,然而就没有答案。那么这些才必须需要自己阅读更多的更专业的书籍论文去寻求答案。
    这是前期的功能原理功能实现流程等方面的调查。有了这些基础之后,这个功能如何实现,也基本有了轮廓。这样,你就可以开始设计基本的软件了,然后按照设计好的结构,制定开发流程,然后一步步的往下走。
    在具体写代码的时候,你会发现,虽然你查到了用什么函数实现功能,然而你并不知道这些函数如何组织成一个逻辑。各个函数的使用有先后关系和注意事项以及适用场合。所以,你必须查阅全面细致的文档,比如MSDN会对函数的相关的函数等做详细的了解。此时你会感觉实在阅读一本书。如果是其他文档,也是如此。在你不熟悉的时候,就需要大量的阅读文档,找到前后依赖关系,将各个函数功能了解的很全面,才知道如何用函数来组织功能流程。
    在具体一个函数的使用上,你还是使用MSDN或文档,他们会告诉你函数的各个参数格式和使用方法以及返回值的作用,有的还会有附加补充。看完这些,你就可以对单个函数有了充分的了解,可以用好这个函数。
    关于函数的组织和单个函数的使用,强烈不建议查谷歌百度。而是建议查MSDN和相关文档,以官方的为准。比如说,你做C/C++编程,并查阅标准的C/C++的文档,如果是Windows的,可以在MSDN查阅。如果是其他的,你可以在其他环境提供的文档查阅。比如QT,有专门的QT开发文档。这个不必细说。
    如果函数你也查了,多个函数的使用关系也查了。基本上你也能够上手了。如果代码写不出来,说明动手写代码能力不行。你可以去搜索别人写好的代码,参考着实现。对于一些常用的基础功能,网上有很多现成的代码,可以弄下来自己运行看看效果,然后学习他的代码,吸收为自己的,搞懂每一个代码的作用。以后你也就可以随时写的出来了。
    那么最后举一个例子来说明这个过程。拿局域网文件传送功能举例吧。
    局域网文件传送功能是局域网通信的一个基础实现。文件传送和传送一个消息没有本质区别。但是文件因为比较大,数据要可靠,所以还有很多方面要考虑到。如果你要做这个功能,你如何做呢?
    你如果没有做过,你怎么办?查!当然,如果你连编程都不会,那就算了吧。不过如果你毅力坚定,也是可以通过慢慢查找到方向的。你就搜索“局域网传送文件如何实现”,然后会有结果告诉你,这是局域网通信的功能。你需要掌握TCP/UDP基本编程,这是实现这个功能的基础。如果你已经学习过了,自然不成问题。然后你还会了解到,传送文件主要在于文件分片传送,可靠传送等。而如何将文件分片呢?也就是将文件数据分割成很多段,然后一个个循环发送就行。接收端一个一个的写到文件里保存起来。基本流程就是这样。
    查到这些资料,你有谱了吗?如果你有点底了,说明你有基础。如果你还是大脑一片空白,说明你需要去进修网络编程基础知识。毕竟文件传送相对于发一个简单的消息,还是要复杂那么一点点。你一下子是调不过来的。不过我想你应该是有基础的。
    这样,你得到了文件传送的关键点在于分片和可靠的传输。因为文件传送是数据量相对很大的,所以采用TCP传输比较好。UDP需要你去保证底层的可靠传输,实现起来比较麻烦。
    我想,这些信息你都可以在网上查到。查到了之后,就是你写代码实现了。你要写一个基本的功能实现流程:基本的通信跑起来(能收发消息) -> 读取文件 -> 分片数据 -> 发送分片数据 -> 接受分片数据 -> 校验分片数据 -> 创建文件并写入分片数据 -> 循环发送和循环接受 -> 传送完毕,保存文件。
    这就是你的基本的实现思路。紧接着你需要一步步的去实现。直到最后完成为止。
    具体实现就需要去写代码了,也就要用API函数和自己写函数了。基本通信的就不说了,不熟的人不不懂。那就说文件的部分,只是举例说明而已,举一反三就好。
    在实现读取文件的时候,你发现你并不知道用什么函数来实现。不知道什么函数也就没法查文档或者MSDN。此时又是查阅网络的好时机。输入“C语言如何读取文件”或者“win32如何读取文件”或“C语言读取文件用什么函数”,然后你就知道了C语言用fopen、fread、fwrite、fclose等。其他的你都可以查到。有了这些函数,你不知道这些函数是怎么联系起来的。此时就不好查网络了。因为一个功能的多个函数的相互关系,很少有人写。最好的也是官方文档,Windows就是msdn。你只要随便输入一个函数名如fread,然后就可以查到相关的各个函数,并且告诉你,先fopen打开文件,然后fread读取文件数据,fwrite写入数据到文件中,最后要使用fclose关闭文件,数据会写到文件中。这些内容都是文档里告诉你的。而msdn基本是英文的,请认真阅读一下,不要将英语不好作为借口而避而不查,这样只会让你开发更加艰难。这些东西很少有人写,因为文档都写的清清楚楚了。你不看,谁也帮不了你。当然,我不排除很多文档有些人翻译过了,虽然有的翻译蹩脚,不过也可以参考一下。但是大量的文档没有中文的,英文的也是最准确的,还是需要多看英文文档。
    这部分搞清楚了之后,最后就是单个函数的参数使用、返回值的使用等,官方文档是最好的资料,这个不要依赖谷歌百度查,查也是简单参考。
    最后,就是用你学的if、else、for、while这些基本语法来组织代码了。比如分片数据就要根据文件的总大小,按照每一片的大小,划分成N片,然后循环发送数据。到这里就没有在基本的细化了。这里就是你的基本实现,慢慢去做,慢慢去测试去调试,直到满意为止。你要说,这些你都不会,那你还写什么程序。if都不会用,那就赶紧学基础知识,就不要想着做这样的功能,等学会再来做吧。如果只是有困难,是正常的,一步步来做就行了。
    而对于我们有经验的人来说,很多基本功能都可以直接想到,就直接去写了。不过我们初期经验不足的时候,就是这么一步步过来的。或者是,当我们遇到没有做过的功能时,也是这么一步步的查询,最后做好的。
    当你这样完整做完了一个项目,虽然不大,但是你可以迅速积累很多开发经验,对整个软件开发流程都有更加深入的理解。久而久之,不断的积累和总结,你很快就可以成为高手了。