文档章节

如何学习别人的代码

佣兵0926
 佣兵0926
发布于 2015/12/02 11:25
字数 759
阅读 490
收藏 4
点赞 0
评论 0

学习的时候通常会遇到如下阻力:

1、代码量巨大,代码气场首先就把人吓退了

2、各种没有使用过的,或者很少使用的,生疏的js方法,又是一个下马威

3、各种代码书写技巧!

判断语句不用if else,用逻辑运算符,闭包不用

(function(){
	//......
})()

!function
+function

4、各种健壮性判断

5、浏览器兼容性处理

6、为方便扩展或使用,使用了一些规范和模式,比如模块化、面向对象方法等

这些阻力,每一个单独让一个入门者去应对,其实都不是多难的事。

但是当他们一起向一个初级水平的人袭来时,往往给人积极性的打击是较大的。

最重要的是,这些阻力容易埋没一个牛逼交互的核心原理,

一个牛逼交互的核心原理往往与这些实际细节无关

一个交互如果没有真正掌握原理就非常容易忘,就容易出了bug无处找原因。所以,学习他人优秀代码时,要注意有意识忽略那些阻力,因为那些阻力其实不是真正的核心和难点

具体做法就是,参考源码,用自己的代码实现一次交互,在具体书写过程中完全不考虑那些问题,不管任何规范,只要能看到效果,怎么方便怎么来。关注代码的目的,而不是实现细节

举个例子

源码获取一个dom,可能会专门写一个方法,形如:

//获取ID
var $ = function (id) {return typeof id === "string" ? document.getElementById(id) : id};
//获取tagName
var $$ = function (tagName, oParent) {return (oParent || document).getElementsByTagName(tagName)};

事实上,如果被操作dom有绑定id,你在js中是可以直接就用的,不用再单独去写方法获取,比如html是这样:

<div id="box">...</div>

在js中就可以直接用起:

box.innerHTML = 'xxoo';

你的目的是获取dom元素,那么你只要能获取到就行,用最简单粗暴的方法,不去考虑其他,因为这不是你的重点和目标,你的目标是整个插件的原理,不要让代码细节阻碍你

实现的代码可能会非常粗陋不堪,甚至只能在你的指定浏览器的指定版本里正常显示,但是它会更突出原理,突出你要学习的重点

掌握了原理,剩下那些问题,都是你可以各个击破,逐步迭代去优化的,都是百度可以轻易找到解决方法的

强调一下:这里所说的方法,是学习方法,不是工作方法和生产方法,实际工作中,一定要尽量规范,考虑全面,否则一定焦头烂额

© 著作权归作者所有

共有 人打赏支持
佣兵0926
粉丝 4
博文 56
码字总数 28941
作品 0
广州
C语言看的懂代码,做不出题?写不出代码?,编不出项目?

  为什么学习C语言这么久,看的懂代码,做不出题,写不出来项目?   前言      我看得懂别人的程序,可是我自己却写不出来,我应该怎么办啊?   你了解这些嘛?      你只是能...

编程大亨 ⋅ 2017/12/07 ⋅ 0

12 个有效的提高编程技能的方法

1. 永远不要停止学习和阅读 阅读 书籍,而不只是网站 阅读 只为自我提升,而不是为了下一个项目 阅读 提升你的基础,而不只是最新技术 2. 跟比你聪明的人一起工作 跟比你更聪明的人或者是更有...

oschina ⋅ 2012/05/11 ⋅ 58

如何学习Java

Java改如何学习,不少大学里面的大学生都是学过Java的,但是他们学习的都是些在Java门口的东西,根本没有深入Java之中去,更谈不上学习好Java了,这里为大家详细介绍下如何学习Java。 购买职...

⋅ 2017/12/13 ⋅ 0

如何减小与“大牛”的差距

为什么同样的时间有的人可以漂亮的完成工作,而有些人废了很大的力气也没有完成? 前者我们常常称之为“大牛”,后者我们常常叫他们“菜鸟”。当然“大牛”都是相对而言的,“大牛”也不可能...

SamZel ⋅ 2012/04/19 ⋅ 0

What most school don't teach !!!大部分学校没教过的!!!!

普通人如何学习编程 现在,计算机已经融入到了我们生活的方方面面,手机、电脑、智能家居等。在计算机变得如此普遍的今天,是不是每个人都应该学习一点编程呢? 2013年,非营利性组织Code.or...

木子尘 ⋅ 2017/11/10 ⋅ 0

什么?油腻的程序员,只要满足其中一点你就中枪了

  前些天,一篇《如何避免成为一个油腻的中年猥琐男》彻底火遍,在圈内引起疯狂转载讨论,感兴趣的可以去围观。   那么今天老侯我也来谈谈,身为程序员的你是否无形中也油腻了呢?那么该...

万能的大白 ⋅ 2017/12/10 ⋅ 0

【资料整理】Python - 简单的epoll server代码解读

作为 Python 的初学者,学习别人的代码也是必要过程,本文主要是针对 《Python中使用epoll开发服务端程序》中的代码,进行源码注释说明。从代码中至少可以学习到如下三点: logging 模块的使...

摩云飞 ⋅ 2013/07/26 ⋅ 0

这8个方法让你成为最优秀的程序员

程序猿给自己的职业生涯设定一个提升目标,“成为一个高薪程序员”不是一个简单的目标。一方面,“我要变得更优秀”意味着你知道“更优秀”是什么样的。另一方面,太多立志改善的人却不知道怎...

我的程序人生 ⋅ 2017/12/29 ⋅ 0

从0到1玩深度学习(0.01):自学Python的一些心得

前段时间一个新来的博士问我怎么学习编程。这位博士之前是学习自动化的,编程经验基本接近没有。鉴于她是一个编程小白,我只好按照“模仿+超越”的思路来给她提供学习编程的一些建议。 选择模...

君君玩科技 ⋅ 2017/10/08 ⋅ 0

TJ Holowaychuk是怎样学习编程的?

原文:http://zhuanlan.zhihu.com/FrontendMagazine/19572823 著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:寸志 链接:http://zhuanlan.zhihu.com/Front...

樂天 ⋅ 2015/11/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

apollo配置中心的学习笔记

公司现在配置文件太多了,导致配置文件修改起来还是非常麻烦的。在boss(业务运营支撑系统)中,配置文件是存放在jar包的,通过应用jar包来引用配置文件(区分不同环境)。这种方式虽然能够满足...

miaojiangmin ⋅ 刚刚 ⋅ 0

Jena增删改查AP

插入、更新数据 public static void insert(){ String query = "PREFIX book: <http://www.book.com/jinyong/> \n" + " INSERT DATA \n" + ......

Vincent-Duan ⋅ 1分钟前 ⋅ 0

springMVC之与json数据交互方法

因为我也要返回json数据。所以需要这个注解@ResponseBody,把Java对象转换成json字符串 注意: 1、@RequestBody不能省,因为前台发过来的数据是json数据,得用这个注解去解析该怎么接收这些数...

颖伙虫 ⋅ 5分钟前 ⋅ 0

用实例域代替序号(31)

1、许多枚举天生就与一个单独的int 值相关联 ordinal 方法,返回枚举常量在类型中的数字位置 下述,枚举修改很不方便,不好维护 永远不要根据枚举的序数导出与他相关联的值 而是将他保存在一...

职业搬砖20年 ⋅ 6分钟前 ⋅ 0

并发编程---ConcurrentHashMap源码解析

ConcurrentHashMap是java中为了解决HashMap不能支持高并发而设计的新的实现。 ConcurrentHashMap的类结构 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements C......

千古一梦888 ⋅ 9分钟前 ⋅ 0

微服务 WildFly Swarm 简介

我们将看到的最后一个Java微服务框架是一个相对较新的场景,它利用了 JBoss WildFly 应用服务器中已试过且受信任的 JavaEE 功能。WildFly Swarm 是 WildFly 应用服务器的一个完整的拆下来的组...

woshixin ⋅ 14分钟前 ⋅ 0

android apk 瘦身

头条APK瘦身之路 随着版本迭代,功能增加安装包体积也会慢慢增大。 今日头条576版本APK达到了25M,通过一系列的优化,到目前的607版本为12M。本文主要是介绍头条APK瘦身中用到的一些方法。 ...

GoldenVein ⋅ 18分钟前 ⋅ 1

mac机器学习开发环境部署及helloworld

一、下载并安装Anaconda2.7 https://repo.anaconda.com/archive/Anaconda2-5.2.0-MacOSX-x86_64.pkg 路径:/Users/shijun/anaconda2 二、运行Anaconda Navigator -> Environments -> base(ro......

八戒八戒八戒 ⋅ 29分钟前 ⋅ 0

关于日常开发的经验总结(Java),持续更新中

常量尽量使用枚举来表示,这样表现力会很强,因为枚举比一个常量类要有更多的扩展性 方法的入参和出参尽量不要使用Map,因为Map会让调用者感到迷惑,他不知道你里面装的什么,面向对象的开发...

小99 ⋅ 29分钟前 ⋅ 0

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 30分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部