程序员的素质
程序员应该具备的素质

程序员应该具备的素质程序员应该具备的素质作为一个程序员,要成为一名优秀的程序员,就必须具备一些必要的素质。
这些素质可以分为以下几个方面:一、技术水平1、语言基础要扎实:一个优秀的程序员应该具备扎实的基础知识,这涉及到编程语言的掌握程度。
熟练掌握一门编程语言,并能熟练运用其编程思想和编程技巧,才能够快速地解决问题。
2、阅读能力要强:优秀的程序员应该具备阅读源代码的能力,能够快速地理解并解读其他程序员编写的源代码。
这不仅能够提高自己的技术水平,还能够借鉴其他程序员的编程思想和编码技巧。
3、解决问题的能力要强:一个优秀的程序员必须具备良好的解决问题的能力。
在遇到问题时,能够分析和归纳问题的根本原因,并提出相应的解决方案。
二、沟通能力1、工作效率要高:一个优秀的程序员应该具备工作效率高的特点,能够在实现业务需求的同时,不断迭代自己的代码和提高自己的技术水平。
2、团队协作能力:一个程序员很少会独立完成所有的工作任务。
一个优秀的程序员应该具备良好的合作精神,能够热心地与其他程序员进行合作,协同开发更好的代码。
3、与用户沟通:一个程序员不仅仅是在编写代码,还需要能够与用户进行沟通。
因此,一个优秀的程序员需要具备一定的沟通能力,能够与用户交流,及时了解用户的需求,并将这些需求转化为可实现的代码。
三、自我管理能力1、自我学习能力:技术更新的速度越来越快,作为程序员,需要不断学习和更新自己的技术。
一个优秀的程序员应该具备自我学习的能力,能够主动学习新的技术知识和工具,以保证自己的技术水平持续进步。
2、分析能力:在面对一个问题时,优秀的程序员能够对问题进行分析,利用自己的技术经验和知识,快速准确地找出问题的根本原因,并提出最有效的解决方案。
3、时间管理能力:一个优秀的程序员需要管理好自己的时间,充分利用时间完成各项开发任务,并保证代码的质量和效率。
总结:作为一个程序员,具备技术能力是必须的,然而只依靠技术能力并不能够获得成功。
成为优秀的IT程序员需要具备哪些素质

成为优秀的IT程序员需要具备哪些素质优秀的IT程序员需要具备哪些素质1、强烈的好奇心一名优秀的IT程序员应该对计算机和技术原理保持一颗强烈的好奇心。
试想一下,如果对IT技术没有好奇心,就很难具备足够的能量坚持下去。
要知道想要成为一名成功的IT程序员,就需要进行广泛而深入的学习。
因此,问问自己是否真的对编程感兴趣。
如果大家的答案是“是”,那么就去寻找大家之前没有注意到的东西,潜入那个浩瀚的海洋中去吧。
2、不轻易说放弃编程的本质是解决问题。
这就是为什么人类要发明计算机!当大家开始写代码时,会遇到一堆问题。
在大家解决了一个问题之后,通常会有另一个问题在等着大家。
解决问题的过程就是大家取得进步的过程,但总有新的问题需要面对。
因此不轻易放弃总是先办法解决问题是一名优秀IT程序员需要具备的素质之一。
3、足够的耐心想要成为一名优秀IT程序员,足够的耐心也是必须具备的素质之一。
技术世界就像浩瀚的海洋,大家永远无法走到尽头,无法成为一个不再需要学习任何东西的高手。
如果大家让自己不知所措,就会有一种想要“迎头赶上”的压力,学习就会变成一件令人烦躁的事情。
因此,大家应该享受自己的学习之旅,才能在漫长的学习之路上一直坚持下去。
4、独立思考编程是一项思考活动。
作为人类,我们非常擅长思考,但现实情况是,即使我们很自然地花了一整天去做这件事,我们在思考上仍然是懒惰的。
如果大家还不习惯,那么要想在一段时间内集中精力解决一个问题是很困难的。
因此,独立思考也IT程序员最宝贵的素质之一。
5、追求创造性我们可以把写编程比作写诗或短篇小说。
在大家的代码中可以看到一种美感,有时只有大家和其他IT程序员可以看得出来。
做出决策的原因和构思答案的方式比“正确的方式”或“错误的方式”更加重要。
拥有艺术家的头脑会让大家拥有更多的选择和可能性,而不是认为只有一种答案。
这就是编程之美,解决问题的方法有很多,思考不同的可能性会让人产生一种感觉,知道哪个解决方案是最适合的。
程序员的自我修养笔记

程序员的自我修养笔记程序员的自我修养作为一名优秀的程序员,除了掌握扎实的技术知识,还需要具备自我修养,以保持良好的个人素质和职业操守。
以下是程序员应具备的自我修养:1. 心态平衡在程序开发中,遇到难题或出现错误时,保持冷静和耐心是非常重要的。
过度焦虑和情绪失控只会影响自己的工作效率,甚至导致更大的错误。
保持心态平衡,运用冷静思考解决问题,是优秀程序员的必备素质之一。
2. 沟通能力作为团队合作的一员,良好的沟通能力是必不可少的。
程序员需要与其他同事交流协调,表达自己的想法和观点,同时也要倾听他人的建议和意见。
良好的沟通能力能够提高团队工作效率,减少不必要的误解和冲突。
3. 学习能力程序开发技术千变万化,不断更新迭代。
作为程序员,需要不断学习新知识,跟上技术发展的步伐。
良好的学习能力可以帮助程序员不断提升自己,适应不同技术领域和任务的需求。
4. 诚信和责任心程序员通常接触到的是项目的核心代码,而核心代码的安全和保密对于整个项目的成功至关重要。
程序员需要有诚信意识,保守商业机密,不泄露重要信息。
同时,在工作中,程序员也需要对自己的代码负责,保证其质量和安全性。
5. 文化素养良好的文化素养可以帮助程序员更好地理解需求,把握项目的方向和目标。
在项目开发过程中,不断学习人文、哲学、历史等方面的知识,可以提高程序员的审美和文化品位,为项目开发增添美感和内涵。
以上就是程序员应具备的自我修养。
只有在不断锤炼自己的技术的同时,保持心态平衡,良好的沟通能力,强化学习能力,树立诚信和责任意识以及厚积文化素养,才能成为一名优秀的程序员。
对程序员的认识和理解

对程序员的认识和理解程序员是从事计算机程序设计和开发的专业人员。
他们通过编写和维护代码来创建和实现计算机程序。
以下是程序员的一些认识和理解:1、技术能力:程序员通常具备扎实的计算机科学和编程知识,能够熟练掌握一种或多种编程语言,如Java、Python、C++等。
他们具备解决问题的能力,能够利用技术和工具来设计和构建高效的程序和系统。
2、逻辑思维:程序员需要具备强大的逻辑思维和问题解决能力,能够理解和分析复杂的问题,并将其转化为可执行的代码。
他们善于运用抽象思维和分解问题的方法,将复杂的问题分解成更小的部分,并逐步解决。
3、持续学习:程序员所处的技术领域不断发展和更新,他们需要保持学习的热情和动力,不断学习和掌握新的技术和工具。
此外,他们还需要了解和适应不同的编程范式和设计模式,以更好地应对不同的开发需求。
4、团队合作:程序员通常与其他开发人员、设计师和项目经理等合作,共同完成项目。
他们需要具备良好的沟通和合作能力,能够与其他团队成员有效地协作,共同实现项目目标。
5、责任感和专注:程序员的工作需要高度的责任感和专注度。
他们需要对自己的代码质量和程序性能负责,确保程序能够正常运行并满足用户需求。
同时,他们需要在项目期间保持高度的专注和投入,以确保项目的顺利进行。
6、创造性和创新性:程序员在解决问题和创新方面需要具备创造性和创新性。
他们需要寻找新的解决方案和技术来满足项目的需求,同时不断探索新的技术和领域,为未来的项目提供更多的可能性。
7、自我管理:程序员需要具备自我管理能力,合理安排时间、任务和优先级,以确保项目的按时交付和质量达标。
他们需要学会合理规划时间,处理任务之间的依赖关系,并学会有效地管理自己的时间和工作流程。
总之,程序员是计算机领域的重要人才,他们具备技术能力、逻辑思维、持续学习、团队合作、责任感和专注、创造性和创新性以及自我管理能力等方面的素质和能力。
这些素质和能力使他们能够胜任各种复杂的计算机程序设计和开发任务,为现代社会的发展做出重要贡献。
合格程序员的基本素质要求

合格程序员的基本素质要求1:团队精神和协作能力2:良好的文档习惯,习惯性的测试习惯,正确的代码编写习惯3:需求理解能力4:复用性,模块化思维能力5:学习和总结的能力1:团队精神和协作能力把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。
把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。
独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务, 缺乏这种素质的人就完全不合格了。
2:文档习惯说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。
缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
3:规范化,标准化的代码编写习惯作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
fans 叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员。
代码具有良好的可读性,是程序员基本的素质需求。
再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。
4:需求理解能力程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾经放言说写一个广告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问情况下的性能指标是如何实现的,对于这样的程序员,你给他深蓝那套系统,他也做不出太极链的并访能力。
程序员的基本素养

程序员的基本素养
程序员的基本素养包括以下几个方面:
1. 编程能力:程序员需要具备良好的编程能力,掌握至少一种编程语言,并且能够使用它进行程序设计和开发。
2. 算法和数据结构:程序员需要了解各种算法和数据结构的原理和应用,能够选择和使用合适的算法和数据结构解决问题。
3. 问题解决能力:程序员需要具备良好的问题解决能力,能够分析和理解问题,找出合适的解决方案,并且能够快速有效地解决问题。
4. 沟通能力:程序员需要具备良好的沟通能力,能够与其他团队成员、客户等进行有效的沟通和协调,确保项目的顺利进行。
5. 学习能力:程序员需要具备良好的学习能力,能够持续学习新的技术和知识,跟上技术的发展和变化。
6. 团队合作精神:程序员需要具备良好的团队合作精神,能够与其他团队成员紧密合作,共同完成项目。
7. 敬业精神:程序员需要具备敬业精神,对工作认真负责,能够按时完成任务并保持工作积极性和创造性。
8. 责任心:程序员需要具备良好的责任心,能够对自己的工作负责,并且对代码的可维护性和可靠性有一定的追求。
总之,程序员的基本素养是一个综合能力的体现,需要有扎实的编程技术基础,具备良好的问题解决能力和沟通能力,能够不断学习和适应新的技术和要求,并且具备团队合作精神和敬业精神。
程序员应该具有那些素质

1、系统化思考对于刚工作的程序员而言,特别是看那些视频自学的人而言,很可能对于技术的理解完全是流于表面的,拿java来说,往往只是知道语言的规范而不知变通,对于很多表面看似“矛盾”的应用会很困惑。
这个时候,就需要有系统化思考的能力,了解java中简单的内存分配以及基础的编译机制,将其处理过程映射到java代码的实际工作流程中,建立对应的系统,加深理解。
类似于一个简单的“人肉编译器”。
2、结构化思维所谓程序员的逻辑思维,其中最重要的,笔者认为是结构化思维,也就是理解结构的思维。
比如每一个类映射为一个实体,类之间的结构与关系是要弄清楚的;OOD是对现实的模拟,现实中的业务如何映射为类以及类的交互的,也应该清晰。
而已有的设计原则与设计模式,则是动态地理解结构,比如从java已有的类交互原则到静态工厂、动态工厂,再到更高层的依赖注入、控制反转,一条主线就是理解类、对象之间是如何动态交互的。
因此,善于理解事物的抽象结构,对于初入实际项目的开发者而言,是很重要、很基础的一种能力。
3、理解复杂性的能力如果说结构化、系统化是顺式建构,那么理解复杂性则是融会贯通之,对软件、业务复杂度的横向的切面式的理解。
比如在语言层面理解语言在进步过程中思想交汇的趋势(面向对象与函数式范式的融合);在代码层面理解软件原有复杂度以及各种范式破坏复杂度之间的平衡;理解简单算法的某个内核精神如何融合在实际处理中而不是该算法;理解特殊业务需要的“不漂亮”的实现方法。
其实际应用之复杂,往往与书上说好的理论相悖,让人困惑,这个时候,要理解这种实际设计过程中的复杂性以及其利弊。
4、沟通技巧在实际项目中,践行基础层,融入实际开发团队,对初入社会的程序员也是相当重要的。
所谓融入团队,其实主要就是和人打交道,如何和别人愉快地合作,开心地工作,也是一门学问。
一般的公司的程序员,除了思维语言某些时候略屌丝之外(别的行业也差不多),人都是不坏的,可能说话比较直,但人并没有太多歪歪肠子,和他们沟通,无论是前辈还是同侪,并不需要费多少心机,保持基本的礼仪和笑容就行。
程序员的职业素养

它可以指在程序设计某个专业领域中的专业人士,或 是从事软件撰写,程序开发、维护的专业人员。
随着时代的发展,对程序员的要求也在变化,需要他 们掌握更多的知识与技能如:UML、单元测试、各种方 法论等,以更快更好的满足不断变化的商业需求。
ቤተ መጻሕፍቲ ባይዱ 专业的程序员
专业的企业精神(做事高效负责,规范化的价值观和 知识体系,规范化的工作习惯和职业纪律,职业化的 工作作风和流程) 编程很专业(技术精湛,经验丰富,有独立分析问题 和解决问题的能力) 做事很专业(善于沟通,不论是和客户、同事、项目 经理、新手,还是老手,乐于和他人合作,具有团队 精神)
职业素养
学习和分析能力。 与内外保持良好沟通,永远是成功的保证 产品意识 团队意识 对于编码规范和文档规划是毫无疑问必须要遵守的
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序员的素质白杨2010-12-01众所周知,软件和硬件工程师个体间存在巨大的生产力差异:经常有一个人一两天就能做好的事情另一个人花一两个月也没能做到同样好。
Apple创始人史蒂夫·乔布斯曾在《In the Company of Giants》一书中接收采访时提到:“一个最优秀的人完成工作的能力能抵50到100个一般水平的人”。
而软件工程领域也经常提到最好和最差的程序员之间的生产力差异超过1000倍,因为如果一个程序员产出的代码中包含了很多bug,需要其它程序员花费大量时间去修正,那么他的生产力是负值。
在世界名著《人月神话》中,作者也明确地提出了类似的观点:“最优秀和一般的软件工程实践之间的差距是非常大的,可能比其他工程领域中的差距都要大……”。
除了团队组织和项目管理等行政方面的问题;以及语文、数学、逻辑思维和形象思维等个人基础素质以外,到底是哪些专业素养导致了程序员个体间的巨大生产力差异呢?本文尝试以由浅到深、由易到难的顺序来讨论程序员的个体素质。
1. 基本技术素养基本素养包含了每个程序员都应当牢固掌握和充分理解的技能和知识。
基本素养中又可以分为前景知识和背景知识两种。
前景知识:今天的程序员主要通过使用编程语言书写代码来完成软件开发活动,前景知识则特指程序员对其使用语言的掌握程度。
这里所说的“掌握”并不是仅仅能够写出合法的代码就行了,而是对语言中各种实现细节的深度掌握。
如果一位程序员未能透彻掌握他正在使用的程序设计语言,那他写的程序就一定会或早或晚地出现一些至少在他看来有些“莫名其妙”的问题,比如:应用程序时常莫名其妙地崩溃、经常发生资源泄露、或是执行过某些操作时性能差的离谱等等。
以C++语言为例:正如大部分C程序员都能毫不费力地将任意C源码“肉眼翻译”成伪汇编码那样,一个合格的C++程序员也应当可以做到将任意C++源码“人脑编译”为对应的伪汇编码。
但现实的情况是由于C++新增了模板、虚函数、RTTI、虚基类、异常等大量高级特性,以至于能够真正透彻掌握C++语言的程序员很少。
除非完全不使用前文中列出的那些C++高级特性,仅把它作为一个“稍好的C”来使用。
否则,对于任何一个职业程序员来说,贸然地使用一种尚不了解其底层(编译器或VM)实现细节的语言特性是一件很危险的事。
类似的例子同样适用于其它语言。
不管是编译型的(如:C/C++)还是解释/虚拟机型的(如:PHP、Java以及JavaScript)程序设计语言,它们都有一些需要程序员事先透彻理解和掌握的实现细节。
背景知识:透彻地理解和掌握至少一门编程语言对任何一位职业程序员来讲都是很重要的基础素质,但仅仅做到这点仍然是远远不够的。
想要产出具备现实意义的产品,还需要具备足够的背景知识。
以下,我们将背景知识分成“公共背景”和“领域背景”两类,分别进行讨论。
公共背景:公共背景包括了几乎每个程序员都需要掌握的知识。
从操作系统原理、编译原理、数据结构、离散数学、计算机组成原理、网络原理等理论性知识到各种接口和实际环境的运行时API(例如:对C/C++来讲通常是操作系统API,对JavaScript来讲通常是浏览器提供的API)都是作为程序员必不可少的基础。
领域背景:领域背景中包含了与具体问题域相关的背景知识,这些知识并不是每个程序员都需要掌握的,但对于涉及该领域的开发人员来讲却必不可少。
例如:对于要实现音频编辑器的程序员来说,至少具备起码的声学背景;MIDI编曲软件的作者需要乐理和和声方面的知识;OCR软件的作者则要学习模式识别和图像处理方面的理论等等。
2. 思维的条理性和连贯性对于一个程序员来说,从产品的设计之初到其中组件的逐一实现完成乃至最后的联调。
整个开发周期从始至终都需要保持清晰的条理和连贯的思维。
以下准则有助于帮助程序员在开发过程中始终保持思维的条理性和连贯性。
3W准则:我想每个程序员都应该遵循3W准则,即:每次在开始编写代码之前,都应当先搞清楚What、Why、How三个问题。
其中“What”指我们要做什么,也就是用户的需求。
“Why”表示为什么我们要做这件事,这是对需求和架构的更深层理解。
很多时候,只有充分了解了“为什么”以后,我们才能更好地完成设计(例如:使用更合适的算法和构架,以及在架构中预留恰当的接口等等)。
最后“How”从设计层面指明了应当以何种架构、哪些模式和算法来最终构建出产品。
值得指出的是,3W准则不但适用与对系统进行整体分析和设计,同样也应当利用在模块或组件等粒度更细的层面上——在开始着手编写一个组件前,应当事先搞清楚这个组件的功能(What);需要在何处使用它、为什么需要用到它、它的典型用例和工作上下文(Why);最后是使用何种架构、模式和算法来实现它(How)。
本质上讲,需求分析和总体设计的意义就是在系统的层面上回答以上三个问题。
总体设计使开发人员能够对待开发的产品在整体上有一个比较清晰的了解,知道当前正在实现的组件处于系统中的什么位置。
在着手实现一个组件前,如果程序员能先在组件的层面上搞清楚这三个问题,那么他就可以在一个目标、动机和实现方式都很清晰的状态下开始工作。
进一步说,在开始工作之前,清楚的知道自己要做什么以及如何完成手上的工作对于任何行业的从业人员来说都是非常重要的。
遗憾的是,相当多的程序员好像并不这么认为。
时刻保持清晰的逻辑:3W准则让我们在动手前就清楚自己要做什么以及如何做。
但在具体实践的时候我们还需要随时清楚自己正在做什么?之前几步分别做了哪些事?以及之后几步还要干点啥?只有时刻了解自己“刚才”、“现在”、以及“将来”要做的事情,才能随时保持思维连贯和条理清晰。
以恰当的层次进行思考:太高的层次过于抽象,而过低的层次容易让我们揪住某些细节问题不放。
在合适的层次思考才能够最有效地想出恰当的解决方案。
什么层次才算“恰当”没有简单的定论,这取决于产品的规模和正在解决的问题。
但是在碰到棘手问题的时候换个层面来重新考量往往能够事倍功半。
3. 高效的产品维护软件产品的日常维护主要包含排错、Workaround、功能变更、架构重构等活动。
对于新手来说,花个几天时间找“臭虫”实属常见(有句顺口溜说的好:“锄禾日当午,不如coding苦,对着C++,一调一下午……”)。
提高产品维护的效率就在很大程度上提高了程序员的生产力(因为有更多的时间编写新代码)。
多年的经验显示,以下要点对于提高产品维护效率、以及提高产品质量都有着不可忽视的作用:编码规范:编码规范对于软件品质的影响怎么强调都不过分。
程序代码作为一种文档,首先是供人类阅读的。
好的编码规范能够有效地降低错误率、提高可读性、以及极大地曾强代码的可维护性。
换个角度来看,代码只写一次,但却需要断地进行阅读、理解、修改等维护工作。
没人愿意接手维护一大堆完全看不懂的代码,在书写时始终遵循一套完善的编码规范则可以在很大程度上缓解这些问题。
编码规范对程序品质和可维护性方面的影响就像鞋对人类的影响一样:都属于效果巨大,但跟没体会过的人很难描述清楚的事情——真是谁用谁知道。
这可能也是为什么那么多公司都在强调它,同时那么多程序员却又不重视它的原因所在——光脚的不怕穿鞋的!错误处理和日志:优秀的错误处理和日志记录方式能节省大量排错时间,同时揭示产品改进的重要线索。
在另一本世界名著《Code Complete》中,作者凭借其多年的软件行业经验以及NASA、IBM等各大组织的长期研究报告得出结论:“在绝大多数项目中,最大规模的活动就是调试以及修改那些不能正常工作的代码……消除软件缺陷实际上是最昂贵且最耗时的软件工作”。
这方面牵扯到的技术和技巧太多太杂,以至于没有办法给出一个总结性的描述。
因此,这里只能以日常维护场景为例,举一个简单的例子:试想一下,你有一个可以向系统syslog、网络syslog server、磁盘文件、Event Log Service等等各种日志目的实时发送日志消息的记录器,它能够工作在调用线程或独立的线程/进程中,就算进程崩溃它也能够捕捉到足够详细的错误信息,即使整个系统崩溃了也不会丢失重要的日志消息。
与此同时,你所有组件中的任何操作发生错误时,都会准确地将该操作的错误信息、操作过程中产生错误的模块信息、该模块调用的底层平台API以及这个API返回的错误信息等等的各级出错详细信息都按照层次结构如实地记录到日志中。
在这样的环境中,无论是排错还是调优是不是都会点单很多呢?正如前文所述,日志记录和错误处理是个很大的话题,足以著书立说。
这个例子也只是揭示其冰山一角,从一个小小的侧面来反映一套优秀的日志记录和错误处理机制对排错和性能分析之类的活动有多大帮助。
环境和工具:熟练掌握开发编辑、分析统计、调试跟踪等工具。
优秀的开发、分析、和调试环境可以节省大量时间。
尽量避免在不熟悉或者较“艰苦”的环境下分析和调试程序。
当然,有时也会有一些不可避免的情况出现。
比如:程序的最终目标平台是基于MIPS架构的NetBSD,但开发人员最熟悉,各类工具最齐全的开发环境确实 x86平台下的Windows系统。
对此,我们的解决方案是:实现一套与跨平台的应用支撑框架,这个支持框架向上封装所有平台相关的功能,为上层应用提供统一的,平台无关的API。
然后使用该支撑框架在Windows(x86)环境完成应用的开发、分析和调试工作,然后在NetBSD(MIPS)平台上重新编译并发布。
其它因素:产品维护的成本还会受到很多其它因素的影响。
比如在设计之初以3W原则精心衡量过的方案可以避免很多后期不必要的变更;比如重用已经经过验证的可靠组件不但节省了开发成本,而且也避免了重新实现产生的缺陷;再比如经验、设计思想和品味对设计产生的影响等等。
4. 标准化和重用标准化本质上就是为重用做准备。
想要拥有大量标准的可重用组件需要长时间的积累。
当然,我们这里提到的“标准化”并不仅仅是指ISO/IEC之类的国际标准或者GB之类的国家标准。
实际上,小到公司甚至是个人也可以有自己的内部标准(其实编码规范就属于这种内部标准之一)。
C++之父Bjarne Stroustrup曾经说过:产品开发就是重用已有标准组件、实现新的标准组件、然后将它们粘接起来的过程。
想要自己实现一套完备的标准组件库当然需要长时间的积累,但如果利用其它人已经实现的现成库呢?我们知道,当今的开源时代,能够免费取用的第三方功能库数不胜数。
但是使用第三方库的成本也不低。
具体表现在几方面:首先,要用好它,你需要阅读大量代码和文档;其次,掌握一个库不光是会使用即可,一旦把它用到自己的产品里,那么当它发生问题时你要修正、当它不满足要求时你要修改和重构、当它缺少功能时你要添加……也就是说,一旦在自己的产品中使用了一套第三方库,那么维护它就是你的义务,而要维护一大堆代码,前提是你需要先读懂这些代码。