![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件开发技术
lxguru2
这个作者很懒,什么都没留下…
展开
-
软件开发技术:天才程序员与优秀团队成员
不可否认,在软件界存在着一些天才的程序员。他们在某些重要的领域极具洞察力,并写出极具效率的软件实现,他们成为软件业界的传奇人物,并激励着千千万万的程序员们。具体表现在,他们的程序既小又快,非常灵活,出乎人们预料。广为人知的是法国的 Fabrice Bellard 和Linux 之父Linus Torvalds。这样的程序员,就像武侠小说里身怀绝技的武林大侠风清扬,张三丰,为万人仰止,如泰山北斗。原创 2016-02-08 13:19:37 · 1049 阅读 · 1 评论 -
软件开发技术:测试覆盖率(coverage)
测试的目的,是确保软件开发的质量,是发现(防止)软件错误。追求所谓的百分之百测试覆盖,并不能保证软件无缺陷。首先,许多软件错误源于需求理解错误;其次,既使百分之百测试覆盖也不能检测到所有的代码错误,比如多条件组合;还有,许多很简单的代码如getter / setter, 没有必要特别测试。单元测试可以检测出大多数比较孤立的软件错误。集成和系统测试关注于子系统之间的行为。测试覆盖率在单元测试上有原创 2016-02-21 10:33:21 · 690 阅读 · 0 评论 -
软件开发技术:测试驱动开发TDD
test driven development 是一种软件开发方法,强调以测试用例来定义功能行为,引导代码编写。整个过程一般是"红绿"模式;红是指测试用例测试失败(因为功能尚未实现), 功能实现后,测试用例测试成功,这是绿。TDD 的功能实现也有讲究。一般地,以最小花销,最简代码(有时甚至用常量替代)实现而使测试用例(暂时)通过。该最简方式能保证我们的代码没有多余部分。当引入新的功能增加新原创 2016-02-22 09:17:52 · 329 阅读 · 0 评论 -
软件开发技术:单元测试
单元测试是程序质量保证的第一道关口,最简单也最有效。软件的绝大部分,是由单元测试来覆盖的。根据经验。95%以上的测试用例,应该是单元测试。单元测试,应该由程序员来完成。单元测试应该百分之百自动化。与低开销的单元测试相比,高开销的系统测试和集成测试仅需实现最关键的少数场景。原创 2016-02-23 09:33:03 · 380 阅读 · 0 评论 -
软件开发技术:测试替身(mocker )
不会拔毫毛变小猴子的行者,不是好行者;不会用替身做单元测试的程序员,不是好程序员。单元测试的核心技术是替身(mock )。可以手工写一个专用于特定测试用例的替身派生类。但是,基于透明代理技术的替身能让你事半功倍。基本上各种语言,甚至包括C++语言, 都有开源的替身框架,提供基于透明代理的替身生成技术。代码的可测试性要求依赖子系统的接口设计大量使用抽象和虚拟修饰,以便替生派生接口的生成。一个原创 2016-02-24 08:24:25 · 1321 阅读 · 0 评论 -
软件开发技术:基于浏览器的集成测试
selenium 开源测试框架系统支持多种浏览器如Firefox, chrome, internet explorer等。测试自动化,如按钮,文本框输入,页面跳转。可以验证类似浏览器内置的对象结构。原创 2016-02-25 07:58:56 · 418 阅读 · 0 评论 -
软件开发技术:设计模式
设计模式经"四人帮"的经典名著推广后,为广大程序员广泛接受。很多人非常热衷于学习并应用这些模式,有意识地在程序中使用或套用到各种场景,很多时候相当生搬硬套。这并不是运用设计模式的最佳方法。我的经验是运用设计模式开发软件,要自然而贴切地融入其场景,连择模式的各子系统自然地对应其场景的某个行为,而且以场景要求命名而非设计模式书本中的标准命名。这样,能防止生搬硬套地滥用设计模式。原创 2016-02-26 09:10:10 · 340 阅读 · 0 评论 -
软件开发技术:过度设计
很多时候,我们都会听到有人评论说某段代码是过度设计。过度设计,就是把可以更简单实现的事情弄得没有必要的复杂,或者是具备暂时甚至永远不需要的功能。过度设计的评价有时会很伤程序员的自尊。但是,在很多时候,避免过度设计有它有意义的一面,使我们不写不必要的代码。克服过度设计的最佳办法,就是严格按照场景需求来完成功能,不要画蛇添足。原创 2016-02-27 09:22:49 · 941 阅读 · 0 评论 -
软件开发技术:开源软件(open source)
开源软件是任何一个程序的软件工程师都无法避免的一个存在。开源运动方兴未艾,涵盖越来越多的领域。如果你的工作环境容许使用开源软件,那么恭喜你,你有机会利用全世界成千上万其它程序员的成果。如果你共享了你的改进代码,你的贡献反过来改进了开源软件,使其它程序员受益。在公司允许的条件下,在设计和实现一个软件项目时,并花些功夫搜寻/评估有关开源软件,是很有益处的。如果有可能,应尽量使用开源软件;如果有原创 2016-02-28 09:18:19 · 1091 阅读 · 0 评论 -
软件开发技术:软件测试
软件测试是现代软件开发必不可少的一个部分。按测试方式,有人工测试,自动测试。按测试范围,有单元测试,集成测试,系统测试,验收测试。按测试目的,有回归(regression )测试,签入测试,用户体验测试,压力测试,性能测试和配置测试。还有冒烟(smoke )测试,粗验(sanity )测试,等等。冒烟测试是一个俚语,指极少数非常简单而又能验证关键功能的测试集合,就象狼烟一样能示警。粗验测试多数原创 2016-02-20 10:30:15 · 441 阅读 · 0 评论 -
软件开发技术:国际化(globalization )
如果你的潜在客户可能来自其它国家,代码的国际化就是一个必须适当处理的问题。源代码的大部是编程语言语法认可的关键词,操作符等。源代码使用的自定义变量/函数/类/名字空间等,应避免使用非英文字母。需要注意国际化的,是代码使用的文本资源,文字格式,货币/日期格式。文本资源尽量采用UNICODE 编码方式。格式化字符串/货币/日期时,要区分用户显示有关或无关情况。若与用户显示有关,应按照用户选原创 2016-02-19 09:58:33 · 774 阅读 · 0 评论 -
软件开发技术:流畅表达(fluent style)
也称为fluid coding, fluent programming,是增强代码可读性的代码设计技术,代码读起来比较自然流畅。其设计要点是函数返回有关类型,从而使多个函数调用前后链接, 阅读代码(省略点号)形似普通的口语句式。参见:fluent interface http://www.raychase.net/263fluent programming http://sta原创 2016-02-18 08:44:33 · 1013 阅读 · 0 评论 -
软件开发技术:SOLID设计原则
SOLID 是以下5个词的首字母缩写,是公认的评估面向对象系统的详细设计的指南。single responsibility 单一责任原则。一个子系统,一个类,一个类函数,应该只关注于一个责任,只有一个原因使之发生改变。open closed 相对开放封闭原则。基础类的设计,对功能扩展开放,对实现修改封闭。增加功能,要以增加继承子类或接口优先,避免修改已经稳定的代码。liskov sub原创 2016-02-09 09:16:41 · 450 阅读 · 0 评论 -
软件开发技术:及时沟通
俗话说,计划没有变化快。在实现开发任务或修复软件错误时,经常会遇到令人困惑之处,如定义不清晰,信息不充分,手头工作难以顺利进行;抑或有临时突发高优先任务,需要马上处理, 等等。此时,程序员应立即与相关人员进行沟通,澄清问题或通报变化, 使大家知晓计划的变化。及时沟通,经常沟通。一般是非正式沟通,通过即时通讯,Email, 碰头短会等形式。较重要之信息,应在会后通过Email 文本确认,并向有关原创 2016-02-10 09:07:57 · 469 阅读 · 0 评论 -
软件开发技术:轻重缓急
多少事,从来急。天地转,光阴迫。一万年太久,只争朝夕。手头事情多,有经验的程序员能分清它们的轻重缓急,恰当处理。对每个任务,都可以粗略地赋予一个优先级别。比如,P0对应于立即解决;P1也是核心功能,应予解决;P2 nice to have, 相当于锦上添花,但非核心功能;P3是有些许价值之任务,可能有助于软件未来之改进。随着项目开发的推进,程序员对任务的理解的逐渐清晰,他可以修改任务的优先级别原创 2016-02-11 07:30:08 · 258 阅读 · 0 评论 -
软件开发技术:代码之可读
有一类程序员,他们的代码写的非常"聪明",但不易读懂。还有一种程序员,他们的代码写得特别好懂。应该尽量的向第二种程序员学习,写出易读易懂代码。因为代码会被维护者读很多很多次。怎样才能写出易读的代码? 首先,代码要能清晰地表达意图。其次,代码体不宜过大,一般函数不应超过四十行,类体不超过二百行。类/函数/变量的命名尤其重要,要能洽当地融入上下文中,整个代码读起来相当通顺自然。原创 2016-02-12 08:50:58 · 329 阅读 · 0 评论 -
软件开发技术:DRY
DRY 是Don't Repeat Yourself 的首字母缩写。说话别啰嗦,写代码也别重复地复制粘贴,把同样的代码东拷西拷。好的设计与实现,代码高度重用,鲜见重复代码片段。重复的代码,实质上是不良设计的体现。通常应考虑增加一个基类函数或一个辅类,把重复的代码移入,消除冗余代码。也可以考虑应用模板(或GENERIC)类或函数。原创 2016-02-13 10:00:26 · 345 阅读 · 0 评论 -
软件开发技术:PRISM
P perform 较好效率。比如尽量使用const 修饰,i + 1 用i++(++i )代替。注意不要过于追求代码运算效率而影响代码可读性。R reliability 较高可靠。代码不仅能处理正常的输入,也可以处理正常之外的输入(返回错误代码,或抛出异常)。I intention 表达清晰。代码易读易懂,表达自然流畅,无需注释。S security 较高安全。避免使用有原创 2016-02-15 09:58:42 · 333 阅读 · 0 评论 -
软件开发技术: 高内聚(high cohesion)
高内聚是指代码只完成一个定义清晰的任务。对函数,高内聚是一个函数只完成一个运算逻辑;对于类,高内聚就是一个类只完成此一个业务逻辑;对于库和包,高内聚是只对应一个业务领域。实际上,高内聚只是单一责任原则的另一种表述。具备高内聚的代码,易读,易于重用,易于测试,易于维护。原创 2016-02-16 09:18:59 · 1544 阅读 · 0 评论 -
软件开发技术:松藕合(loose coupling)
也称低藕合。藕合度是度量一个代码单元在使用时与其他单元的关系。最理想,最松散的耦合,是一个单元无需其他代码单元特别的配合而可以使用。松藕合一般与高内聚相关。具备高内聚性的代码单元,一般都比较松藕合。通常,觉得一个代码单元和其他单元纠缠不清,特别难用,特别难以用对,很可能是藕合度过高。原创 2016-02-17 09:32:56 · 2256 阅读 · 0 评论 -
软件开发技术:相互学习
每个程序员都希望提高自己的开发水平。每个程序员都希望自己的任务及时而高质量地完成。当自己力又有不能及时,最好的办法是求助于他人,向同事学习。如何让他人愿意花时间来帮你,这就是一个关键问题。你有没有什么回报,比如在你的专长领域帮助别人,或用其它形式补偿别人。首先,不能保守自私,要经常与同事共享新知识新发现;其次,要经常表扬他人,鼓励他人继续帮助别人;再次,要有意识地形成团队气氛,让大家感觉到帮助原创 2016-02-29 16:05:46 · 411 阅读 · 0 评论