转摘自:http://my.oschina.net/myemptybottle/blog/42683

部分转摘,全文请查看原文!

我第一次看到WebKit代码中did,will前缀有点困惑,看多了才熟悉了其含义.will/did相当于某些项目里的before/after,也就是在某件事情发生之间和发生之后要进行的处理(有些地方并不正确,但大体如此),did类似callback的含义,像win平台上常见的OnKeyDown里的On.
will,did,callback,after,before在webkit的函数命名中都有使用. 

    其命名惯例还有client和private,  AAAClient表示的是需要关注AAA处理的过程中一些逻辑点的类,***client一般是个接口类,继承它,实现自己的逻辑,这样***在进行一个操作时会调用client类的逻辑,实现通知or处理or拦截. 

    private就是pimpl手法,多用于外围逻辑和移植的部分,AAA类会有一个AAAprivate成员,AAA的方法就是简单的调用AAAprivate的同名方法.在WebKit里有些地方也用impl这个标缀,但不多. 

    

    阅读过程可能很累很疲倦,涉及方方面面细节很多,最好找至少30分钟的块状时间来进行阅读.看5分钟就被打断了,回过头很可能就忘记了,也就白浪费了5分钟. 

    个人觉得多注意几点: 

    

    0. 选择性阅读,注意每个类实现了什么功能,这个功能的关键程度. 

       我们的时间只够看有意义的类,不可能犄角旮旯的代码也去仔细阅读. 

    

    1. 对于 类,可以通过查看类名的引用关注它是在何处何时构造的,以清晰它的重要程度. 

       

    2. 阅读一个类的方法时,多使用"查看所有引用"功能. 

       以: 

         a.防止自己在阅读无太大意义的代码. 

         b.清晰这个方法调用时的运行环境/逻辑环境,以更好的体会方法中的代码要注意的地方. 

  

    3. VS与Source Insigh交换着使用,2者各有各的优缺点.阅读时应该注意自己此时使用的是哪样工具从事哪样事情,争取提高每分每秒的效率. 

       我使用的是VS2005,其代码上下文窗口响应极其缓慢,查看定义和声明时常有一些bug,"智能感应"功能耗CPU很高却耗时很久,而source insigh在这方面相当的完美. 

       VS内置标签页功能,而且可以建立垂直选项卡组,在宽屏上可以很方便进行并排阅读.安装visual assistant后,有更多快捷的功能. 

       总而言之,我们要灵活使用2者来最高效率的完成夸张的工作量. 

  

    4. 阅读时可以加些断点,加载一个网页,执行一些操作,跟踪下流程,加深理解. 

  

    5. 多做记录,因为逻辑繁杂,很容易看一些忘一些(我去年就看过一小部分webkit代码,今年几乎就想不起来了,幸亏留了些笔记.), 做些记录,以便查看时能把以前的理解很快的捡起来. 



    6. 对一些有趣优秀的地方,一些臃肿的地方进行总结反思学习,多总结才能更好的帮助自己代码设计的更好,写的更好. 



    7. 对自己要严酷,要有规划,若仅仅是非常肤浅的读webkit一部分代码,个人强烈建议节约时间看一些网络上的webkit代码阅读总结大体了解好了.毕竟不深刻的记忆总是很容易忘记的,而人的时间是最昂贵的,做一件不能成为回忆的事情是对生命极大的浪费.

WebKit阅读起步的更多相关文章

  1. 探索WebKit内核(一)------ 菜鸟起步

    为什么搞WebKit 如今研究WebKit的人越来越多,俺不能免俗,也增加当中.WebKit的火爆也是得益于浏览器和WebOS的混战,随着Palm WebOS, Chrome OS, Firefox ...

  2. android源码如何起步与阅读方法

    显然Eclipse不是阅读Android源码的好工具,不流畅,搜索低效,继承性关系/调用关系都无法有效查看.推荐Source Insight,在这个工具帮助下,你才可以驾驭巨大数量的Android 源 ...

  3. Bootstrap的起步

    -- Bootstrap的起步部分是对Bootstrap的基本了解,有些细节只是在后面的完善时候需要详细阅读. 最基本点还是Css 和组件部分,这部分应该先进行练习....高级阶段是Javascrip ...

  4. 【02】bootstrap起步

    起步 简要介绍 Bootstrap,以及如何下载.使用,还有基本模版和案例,等等. 下载 Bootstrap (当前版本 v3.3.5)提供以下几种方式帮你快速上手,每一种方式针对具有不同技能等级的开 ...

  5. [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析

    [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析 标签: webkit内核JavaScriptCore 2015-03-26 23:26 2285 ...

  6. 《Pro Git》阅读随想

    之前做版本管理,我使用最多的是SVN,而且也只是在用一些最常用的操作.最近公司里很多项目都开始上Git,借这个机会,我计划好好学习一下Git的操作和原理,以及蕴含在其中的设计思想.同事推荐了一本< ...

  7. WebKit技术内幕

    WebKit技术内幕(浏览器内核|渲染引擎| HTML5| Chromium项目Committer重磅作品) 朱永盛 著   ISBN 978-7-121-22964-0 2014年6月出版 定价:7 ...

  8. Android之 -WebView实现离线缓存阅读

    前言 本篇博客要实现的是一个离线下载和离线阅读的功能,这是很多阅读类app都常见的一个功能,典型的应用就是网易新闻.什么是离线下载?其实这个概念是比较模糊,是离线之后下载呢,还是下载之后离线,但稍微有 ...

  9. Week3 博客阅读感想和代码复审

    一.关于博客阅读感想 阅读了十多篇老程序员(大多在计算机相关行业工作超过10年)关于自身经历的博客,很有感触.这里一方面总结一下看博客的收获,另一方面写点自己的感受. 首先,这些博客不少涉及到了两大类 ...

随机推荐

  1. Go语言中的UDP应用

    Go语言中的UDP应用 Go语言中使用UDP是很方便的,net包提供了UDP和TCP的功能,这里使用UDP做了一个UDP广播,然后接收各个设备的返回信息.实现起来很快,总体感觉比使用C#中的UDP更优 ...

  2. R语言学习笔记(二): 类与泛型函数

    类 大多数R对象都是基于S3类(来源于第三代S语言),例如直方图函数hist()输出是一个包含多个组件的列表,它还有一个属性(attribute),用来指定列表的类,即histogram类. 泛型函数 ...

  3. Android面试收集录 文件存储

    1.请描述Android SDK支持哪些文件存储技术? 使用SharePreferences保存key-value类型的数据 流文件存储(openFileOutput+openFileInput或Fi ...

  4. PHP.39-扩展-锁机制解决并发-MySQL锁、PHP文件锁

    锁机制适用于高并发场景:高并发订单.秒杀…… apache压力测试 Mysql锁详解 语法 加锁:LOCK TABLE 表名1 READ|WRITE, 表名2 READ|WRITE ......... ...

  5. 暗影精灵3安装无线网卡驱动(ubuntu16.04)

    干货,无线网卡安装步骤: 1. 由于暗影精灵3的无线网卡较新,版本为Realtek Device b822,(查看命令为lspci | grep -i net,Ethernet controller代 ...

  6. FreeRTOS任务暂停和启动函数

    任务句柄 TaskHandle_t pump_task_handle = NULL; 任务的启动函数 if(eTaskGetState(pump_task_handle) != eRunning) v ...

  7. 网页设计简史看设计&代码“隔膜”

    本文来自网易云社区 作者:马宝 设计与代码之间隔膜所在?既然你诚心诚意地问了,我就大发慈悲地告诉你.为了防止地球被破坏,为了维护世界的和平,为了贯彻爱与真实的邪恶~,我是穿梭在前端与设计之间爱与美丽的 ...

  8. 『AngularJS』创建 Service

    创建服务 Angular提供了几种有用的服务,对于所有的应用来说,你将会发现这些服务对于创建你自己的服务是有用处的.为了创建自己的服务,你应该从通过一个模块(module)注册一个服务工厂方法开始(可 ...

  9. ACE学习综述(1)

    1. ACE学习综述 1.1. ACE项目的优点 可以跨平台使用,基本上可以实现一次编写,多平台运行. ACE本身不仅仅是一个简单的网络框架,对于网络框架涉及到的进程管理.线程管理等系统本身相关的内容 ...

  10. TortoiseGit小乌龟 git管理工具

    1.新建分支git远端新建分支: b001本地git目录:右击--TortoiseGit--获取(会获取到新建分支) 2.本地新建分支对应远端分支本地新建分支:b001 关联远端分支b001(之后工作 ...