建设网站机构,seo推广方式,芜湖建设路小学网站,知识付费商城搭建要具备开放性思维#xff0c;就必须了解包括从CPU的执行方法#xff0c;到Windows平台的运转#xff0c;到你的程序的调试#xff0c;最后到你要实现的功能这一整套的内容#xff0c;只有做到这样#xff0c;才能真正提高。如果你的知识范围很窄#xff0c;什么也不了解…要具备开放性思维就必须了解包括从CPU的执行方法到Windows平台的运转到你的程序的调试最后到你要实现的功能这一整套的内容只有做到这样才能真正提高。如果你的知识范围很窄什么也不了解纯粹只了解语言那你的思维就会很狭隘就会只想到这个语言有这个函数那个语言没有那个函数这个C有这个类那个语言没有这个类等。而真正要做一个系统思维一定要是全面的游离于平台之上的系统和实际的应用软件是不现实的。这种所谓理想化已经有很多人提出是不现实的。所以任何一个软件一定都是跟一个平台相关联的脱离平台之上的软件几乎都是不能用的。这就必须对平台的本身非常了解。如果你有平台这些方面的知识这样在思考一个问题的时候能马上想到操作系统能提供些什么功能我再需要做些什么然后就能达到这个目标。这就是一种开放的思维。在开放的思维下我要做这个程序的时候就会考虑怎么把它拆成几个独立的、分开的模块最简单的怎么把这个模块尽量能单独调用而不是我要做个很大的EXE程序。一个很普通的程序员如果他能够考虑到将程序分成好几个动态库那么它的思维就已经有点开放性了就已经不是MFC那些思维方式了。思考问题的时候能把它拆开就是说任何一个问题如果你能把它拆开来思考这就是简单的开放性思维。但光会拆还是不够的尽管有很多人连拆都不会。很多教科书中的程序要解决问题的时候就一个main以后就是一个非常长的函数。这个main函数把所有的事情都解决了。如果连函数都不会分的话则就是典型的封闭式思维。这样的人不是没有我是碰见过的。一些毕业生做的程序就有这种情况。所有的问题都由一个函数来解决。他就不会把它拆成几个模块。我问他把一件工作拆成几件模块不是更清晰吗他说拆出来后的模块执行会更慢些。这就是很明显的封闭式思维和非封闭式思维的区别。你看MFC的思路那就是一层套一层的要把所有的类都实现了然后继承。它从CWnd以后把所有的东西都包括进去了组成一个巨型的类。这个巨型的类连界面到实现统统包括在里面。这时你怎么拆根本就没有拆的方法这就是封闭式思维。如果一个系统、一个程序不能拆的话则它基本上是做不好的。因为任何一个程序如果它本身的复杂度越大它可能出错的几率就越大。比如最简单的哪个函数越大则该函数的出错几率就越大。但如果把该函数分成很多小的函数每个小的函数的出错几率就会很小那么组合起来的整个程序的出错几率就很小。这就是为什么要把它拆出来的原因。你用C来实现的方法也是一样的。你要把它拆成许多的接口如果能做到这样你就能把它独立起来甚至你能把它用动态库的方法去实现。动态库是现在的程序非常重要的一块。1.4.1 动态库的重要性有了动态库当你要改进某一项功能的时候你可以不动任何其他的地方只要改其中你拆出来的这一块。这一块是一个动态库然后把它改进只需要把这个动态库调试好后整个系统就可以进行升级。但如果不是这样你的整个程序是独立的文件然后另外的功能也是一个独立的文件把这个程序编译成一个EXE这就不是动态库的思想。按道理我只改这个文件其他系统也不需要进行调试。理论上看起来是一样的而实际的结果往往就是因为你改动了这个文件使得原来跑得很好的整个系统现在不能跑了或者出现了很奇怪的现象。如何解释这个问题事实上这就涉及到编译器产生代码的方法如果不了解这点的话永远找不出问题来。不存在没有BUG的编译器包括VC它也会产生编译上的问题。就算把这些问题都排除你的软件也可能因为你加了某些功能而影响了其他的文件这个几率甚至非常大。这又得把你以前的测试工作重头再来一遍了。动态库和EXE有什么不同呢动态库包括它的代码和数据都是独立的绝对不会跟其他的动态库串在一起。但是如果你把所有功能放到一个EXE的工程里面它的数据和代码就都是放到一起的最后产生可执行程序的时候就会互相干扰。而动态库就不会这是由操作系统来保证的。从理论上看动态库也是一个文件我做这个工程的时候也是一个独立的文件但它就会出现这样的问题。1.4.2 程序设计流程程序设计流程其实很简单。第一步就是要拆出模块如果你有开放性思维,则任何软件都非常容易设计。怎么设计呢首先拿到问题的时候一定要明确目标然后对操作系统所提供哪些功能程序怎么跟操作系统接口考虑清楚接着就是“砍”把它分开要把它拆成一个个的独立的模块最后再进一步去实现从小到大地进行设计。首先“抓”马上能进行测试的简单的模块就像刚才说的成对编码那样写任何一个部分都要进行调试每个部分最好能独立进行调试。这样每个部分都是分开的时候它都有一定的功能。当把所要做的功能都实现后组合起来再进行通调就可以了。决定一个软件的成败还是得看该软件设计的思维是否正确。我们也试过即使你把那些所谓的软件写得再明白也没有用如果实现这个软件的思路不对则下面的工作根本就没有必要。做软件时一定要把注释写进去。这样写成的软件如果要改版的话就很容易因为你的整个系统是开放性的那么你要增强某些功能的时候都是针对其中的某个小项做改进只要改它就是了。如果那个功能是全新的则它本身就是一个独立块只要去做即可。现在很多开发工具都提供了自动化设计的功能在生成新的程序的时候只要设置好一些条件就能自动产生程序的框架这是一种趋势吗其实这种方法不太适用通用软件的开发针对某个公司做个ERP系统可能会管用但是那些方法拿不到通用软件里面来。通用软件绝对是一行一行地编码产生出来的而且每一行编码的结果要达到一种可预测性。什么叫可预测性就是你写程序的时候如果发现某一种症状马上就能想到该症状是由于哪个地方出了错而不是别的地方也就是从症状就能判断出是哪些代码产生了问题这就是可预测性。如果你用MFC来“玩”的话即使它出错了你也可能不知道错误在哪里它的可预测性就很差。做软件时如果它的可预测性越高解决问题的方法就越快。如果某用户说我出现什么状况了你马上就可以断定错误而不用去搜索源代码就能想到程序可能是什么地方有问题则这就是可预测性。