资讯月刊下载
[研发管理] 都100%代码覆盖了,还会有什么问题?
引言 (图片来自:http://t.cn/R06rQHi) 很多人看到这个标题时,都会想“你都100%代码覆盖了,怎么还会有问题呢?” 让我们看一下代码例子: public class TestCalculator { public Double add(Double a, Double b) { return a + b;} } 再看看用junit写出的测试代码: @Test public vo ...
[研发管理] 测试技巧 – 你所不知道的测试黑科技
技巧一:处理实例化 在我想办法让我的Android App通过Unit Test和Integration Test的过程中,我积累了一些小的经验与技巧,可以成功的处理比较麻烦的代码。展示开始: 问题代码 我想测试这段代码 public void readDeepLink(String path) { new DeepLinkReader().readDeepLink(path); } 我只 ...
[移动开发] iOS开发实战:如何在ReactiveCocoa中编写单元测试?
现在很多人在开发iOS时都使用ReactiveCocoa,它是一个函数式和响应式编程的框架,使用Signal来代替KVO、Notification、Delegate和Target-Action等传递消息和解决对象之间状态与状态的依赖过多问题。但很多时候使用它之后,如何编写单元测试来验证程序是否正确呢?下面首先了解MVVM架构,然后通过一个例子来讲述我如何在RAC(ReactiveCocoa简称)中使 ...
[移动开发] iOS大型项目开发漫谈
标题有些吓人请不要害怕,不过这确实不是扫盲贴,需要一定的iOS开发基础。在我多年的码农生涯中绝大部分时间都是做的小项目,大一些的可能也就是百万行代码的样子,跟Windows系统几千万行源码比简直就是小巫见大巫。不过,一个iOS项目的源码有数百万行算蛮大了。我想说的是,人总是会成长,会担当更大的责任接受更大的挑战,终有一天组织会有重要任务交给你。不过软件开发不是一朝一夕,也不会有多么的轰轰烈烈,更多的 ...
[企业架构] 从四分钟到两秒——谈谈客户端性能优化的一些最佳实践
背景 最近跟售后经理吃饭,他跟我再次谈起两年前为公司临时写的一个客户端,仍然非常激动的跟我说,这个客户端完爆了公司其他版本的客户端,包括最老的Delphi写的,Asp.Net写的,以及最新的Wpf写的客户端。无论是多么大的界面(集成的机房多),这个系统都是瞬间打开,而且运行非常稳定,一旦成功部署之后基本没有任何问题。 这个版本的客户端仅仅只是一个临时替代的版本:原来的Delphi客户端实在是太慢了 ...
[编程语言] 写给精明Java开发者的测试技巧
我们都会为我们的代码编写测试,不是吗?毫无疑问,我知道这个问题的答案可能会从 “当然,但你知道怎样才能避免写测试吗?” 到 “必须的!我爱测试”都有。接下来我会给你几个小建议,它们可以让你编写测试变得更容易。那会帮助你减少脆弱的测试,并保证应用程序更加健壮。 与此同时,如果你的答案是 “不,我不编写测试。”,那么我希望这些简单但有效的技术可以让你了解编写测试带来的好处。你也会看到,编写一个复 ...
[Web前端] 前后端分离了,然后呢?
前言 前后端分离已经是业界所共识的一种开发/部署模式了。所谓的前后端分离,并不是传统行业中的按部门划分,一部分人纯做前端(HTML/CSS/JavaScript/Flex),另一部分人纯做后端,因为这种方式是不工作的:比如很多团队采取了后端的模板技术(JSP, FreeMarker, ERB等等),前端的开发和调试需要一个后台Web容器的支持,从而无法做到真正的分离(更不用提在部署的时候,由于动态 ...
[移动开发] iOS项目的持续集成与管理
在iOS项目开发中,当实现新功能时如果忽略可维护性而引入技术债务,将会需要延迟解决它或导致增加维护成本。开发者需要设置什么才能自动监控代码质量?通过适当运用Gcovr等一系列工具,就能有效提高代码质量。 当实现新功能时,如果忽略可维护性而引入技术债务,那将会需要延迟解决它或导致增加维护成本。 最近我们已经思考通过哪些方式来提高代码的质量: 当代码的质量下降时,通过设置一些工具来马上提醒开发者; ...
[行业应用] 我从谷歌工程师文化中学到的 6 个核心原则
每周,一组谷歌员工都会在厕所的墙壁上粘贴一页来分享本周的测试小建议。有时这页纸会讨论依赖注入,并提供一个简单的示例展示如何用不同语言使用它;有时它可能会分享如何安装一个用于测量团队代码库测试覆盖率的软件。“Testing on the Toilet”起初是个奇怪又有趣的方式,来教给工程师在工作中会用到的一些新的东西,这也被突出为Google文化中的核心力量:向工程师组织有效的传播一系列最佳实践。 ...
[非技术] 让程序员精神分裂的9件事
在外行人眼里,软件开发工作就跟看天书一样难——但是程序员往往会一脸苦哈哈地表示“还有更难的呢!”在最近Quora上面的一个讨论中,我们总结了9件最让程序员糟心的事——简直就是分分钟让我们精神分裂啊!!! 9.设计解决方案 任务:给出一系列要求,设计出可实施的方案,包括设计数据和代码结构、功能算法和应用程序流程。 难点:确保你设计的解决方案得满足客户的要求,并且按时完成。 网友的话: 引用 ...
[研发管理] 同行代码评审过程中的实践经验
数百万年前,猿从树上下来,进化出了对生拇指,最终,变成了人类。 我们以类似的眼光来看下强制性代码评审(Code Review):好像是一种能在软件开发这块广阔的领域里将人类从兽里分离出来的东西。 不过,我有时候会从我们的团队成员里听到下面这样的评论: “这个项目的代码评审根本就是浪费时间。” “我没有时间做代码评审。” “我的项目发布延期了,都是因为我那懦弱的同事还没有做任何评审。” “你能 ...
[企业架构] 如何一步一步打造高可扩展性的应用程序?
随着项目的规模越来越大,项目的维护性就可能会变得越来越差,有时可能会出现牵一发而动全身的情况。如果需要修改某个功能的代码,或者添加某项功能,会耗费大量的人力和时间。这种情况下,高可扩展性的、低耦合的应用程序就变得非常重要了。 本文通过构建一个时钟程序,来讲解高扩展的应用程序是如何一步一步搭建的。 什么是可扩展的应用程序? 一个可扩展的应用程序应该能够以某种方式实现增长,并且添加、删除、增强、重 ...
[企业架构] 如何加速 Java 应用开发
在实际开发过程中,有很多时间浪费在启动服务器、调试、重复工作上等。如何提高开发效率我觉得有必要去思考一下。本系列不包括改善硬件来提高速度。在此我从5个方面总结了如何提高开发效率,当然不一定很完善,欢迎补充。 本系列从如下几个方面介绍:优化应用提高启动速度、使用如热部署减少重启服务器时间、使用单元/集成测试缩短发现问题到解决问题的时间,使用模板消除常见的重复,脚本化日常工作等几个方面介绍。 ...