alighters

程序、写作、人生

Ruby 代码重构

| Comments

在《 Ruby 元编程》一书的第二章 method 中,通过一段代码的重构,来展示 Ruby 的特性,如何以很少的代码来达到我们最终的效果。

示例 Demo

源代码:data_source.rb,其通过传入工作站点的 id,用来获取工作站点信息,如下:

Android单元测试-Robolectric 浅析

| Comments

介绍

Robolectric 测试框架针对 Android 的组件(包含各种View)进行了统一的 Shadow,使得我们不再依赖模拟器或真机,直接就单元测试就可方便地测试我们的 UI。

引入

1
testCompile "org.robolectric:robolectric:3.1.1"

Android单元测试-Mockito 浅析

| Comments

本文主要针对测试框架 Mockito 在实践中的经常用到的代码做一示例汇总,并对其实现思想做以简单的分析。

介绍

用来为提供函数返回结果的模拟(mock)及对函数调用过程的验证。

关键词 + mock : 针对真实的类或者对象,创建一个模拟(代理)的对象。 + stub : 针对一个类或者对象的方法,进行模拟调用及输出。

ThreadLocal在Android消息机制中的作用

| Comments

提及Android的消息机制,相信这是Android开发者非常熟悉,并且相当基础的一个知识点了。那这里还有什么需要讲的呢?这里,先抛出一个问题:

问题

我们在使用Handler的时候,都知道其必须要跟一个Looper绑定的。而在UI线程可直接初始化Handler来使用,但是在子线程则不行,系统会抛出一个必须调用Looper.prepare()的异常信息。缘由在于,当初始化Handler的时候,其会通过Looper来获取当前的Looper,代码如下:

Javascript变量声明提升

| Comments

遇到了JS的变量声明提升,英文名为Hosting,具体来讲是指JS在对当前作用域中的声明代码,会将其提升至当前作用域的最顶端。本文通过几个示例来详细理解一下:

Javascript Garden 笔记

| Comments

PS : 这是一篇针对javascript garden做的笔记,更多内容请查看原文链接 : http://bonsaiden.github.io/JavaScript-Garden/zh/

对象

  1. JavaScript 中所有变量都可以当作对象使用,除了null 和 undefined;
  2. 2.toString(); // 出错:SyntaxError,因为解析器试图将2.作为浮点数的一部分来解析,可以使用(2).toString()或者2..toString()或2 .toString();
  3. 使用{}可以创建一个新的对象 ,新的对象继承自Object.prototype;
  4. 访问对象的属性,可以通过 “.”或者“[]”操作符,删除属性则通过delete操作符;