前端——语言——Core JS——《The good part》读书笔记——第九,十章节(Style,Good Features)
第九章节
本章节不再介绍知识点,而是作者在提倡大家培养良好的编码习惯,使用Good parts of JS,避免Bad parts of JS。它是一篇文章。
本文的1-3段阐述应用在开发过程中总会遇到需求更新,BUG的修改,代码的维护等。而在这些过程中保持代码没有任何错误是一个非常挑战性的工作,所以在日常开发时必须严格要求自己,编写阅读性较高,可维护较高的代码,使用”strict”模式编写JS代码。
本文的4-8段阐述style在开发过程中的作用性,优秀的编码风格会导致代码更容易阅读,也更容易理解,这样更容易在其基础上修改或进行优化。
其实公司一般都采用统一的代码风格,以前遇到过几千行JS的代码,真看的让人头大,而且代码变量很容易重复,也很容易出错,JS代码是有一处错误不会继续往下运行的,这导致在其基础上编写或维护造成一种恐惧感,有的甚至你还没有开始写,只是简单的运行几次,代码就报错了,那你改不改,改的话需要读懂所有的JS,了解所有的这些需求,不改吧,怎么到你手里就出错了,锅从天而降,无奈。
后续的部分都是介绍书籍作者保持的优秀代码风格。
- 块缩进使用4个空白字符。
- 把一条statement语句放在一行,尤其是++,--这些。
- If和while包含{},尤其是if,紧跟的一条statement才是逻辑块,之后的statement都是独立的,与if没有任何关系。
- {}不另起一行,而是 { 与代码在一行。这个因人而异,只不过代码行数会增加
- 代码必须写注释,而且修改代码,对应的注释也必须修改。
- 由于JS没有块作用域,所有的变量定义在函数的开头。
- Switch,case语句中case必须有break。
- 使用一个全局变量代表一个应用或者JS的代码库,常见的优秀的框架都是如此,jquery,easyui等。
第十章节
本章是本书的最后一章,和第九章一样,它没有知识点内容,而是一篇文章,阐述了作者编写本书的缘由,以及他的观点。
本章1-3段介绍作者编写此书的缘由,最初是被邀请为《Beautiful Code》一书写一部分内容。作者之后便尝试去发现JS中的Beautiful features,首先想到的就是在开发JSLint编译器的工作经历,后来确实内容过多,而原书只允许他写30-40页,所以他自己打算出本书。
本章第四段是作者在《Beautiful Code》一书中的部分内容,这些都是JS精华部分。第一,function扮演构造器的角色,同时扮演类的角色;第二,对象可以动态的添加和删除属性;第三,创建对象时使用字面量,例如对象,数组。
本章第五段作者描述除上述精华部分之外,JS还需要添加一些新的功能,例如添加PI常量,不保留关键字,添加块作用域。
后续部分作者思考为什么JS语言的开发者没有他这样的想法,反而是不断的去提升JS语言的功能,增加许多新特性。新特性一方面浪费开发者的精力,需要测试去验证它的正确性,另外一方面学习者(程序员XX)也需要更多的精力去学习。一门优秀的语言不在乎它功能的多少,而在于它功能中精华部分的占比。
个人感受
从我个人的学习和实践经验来看,是完全赞成和支持作者的。JS语言与Java语言比较,它是很小的,它的用途是明确的,就是为了将静态页面转换为动态页面,所以Client-JS部分的内容是JS的核心。
而Java,它的方向就很多,分为JVM;基础知识J2SE,J2EE,J2ME;衍生出来的很多框架,尤其是以开源组织Spring,Apache为代表,不得不吐槽框架是真的多;其他附加的一些基础知识,UML,设计模式,数据结构,操作系统,网络,面向对象设计等等,虽然这些不是Java独有的,但是也是必须学习的。
两者从实践角度,前端大部分都基本在操作HTML文档,监听事件,调CSS样式等等这些,而后端确实太简单了,学些API,或者了解业务逻辑,抄别人代码,反而是理解业务逻辑是最难部分,但是深入学习,你会发现Java不是你看一两本书就会的,要求你一两年精通Java,研究Java源码啊,这些估计都不是自己学习,自己的话就会感觉到难度了。相对Java,JS比较简单。
学习和实践感受是不同的,实践会发现前端稍微复杂一些,学习时会发现后端比前端复杂很多。
至此本书内容已基本结束,只剩余一些附录。
前端——语言——Core JS——《The good part》读书笔记——第九,十章节(Style,Good Features)的更多相关文章
- 前端——语言——Core JS——《The good part》读书笔记——初篇
本书是一本经典,优秀的JS书籍. 目的 在书籍中作者多次提及本书的目的,让读者去发现语言中的精华部分,避免糟粕部分,提高代码的编写质量.简述为取其精华去其糟粕. 本书的内容只涉及到Core JS部分, ...
- 前端——语言——Core JS——《The good part》读书笔记——第一章节(Good Parts)
本章是引言,有四个小节,具体内容如下: 第一小节 第一小节介绍作者的观点,作者编写本书的目的. 原文:I discovered that I could be a better programmer ...
- 前端——语言——Core JS——《The good part》读书笔记——第四章节(Function)
本章介绍Function对象,它是JS语言最复杂的内容. Java语言中没有Function对象,而是普通的方法,它的概念也比较简单,包含方法的重载,重写,方法签名,形参,实参等. JS语言中的Fun ...
- 前端——语言——Core JS——《The good part》读书笔记——第五章节(Inheritance)
本章题目是继承,实质上介绍JS如何实现面向对象的三大特性,封装,继承,多态.本章的最后一个小节介绍事件. 与Java语言对比,虽然名称同样称为类,对象,但是显然它们的含义存在一些细微的差异,而且实现三 ...
- 前端——语言——Core JS——《The good part》读书笔记——第七章节(正则)
本章介绍正则表达式的内容.正则表达式是一门独立的语言,它拥有自己的语法规则,在学习本章之前需要了解基本的语法规则. 正则表达式是通用的,意味着同样的语法规则可以适用于不同的编程语言,相同的正则表达式在 ...
- 前端——语言——Core JS——《The good part》读书笔记——第三章节(Object)
本章介绍对象. 在学习Java时,对象理解为公共事物的抽象,实例为具体的个例,对象为抽象的概念,例如人为抽象的概念,具体的个例为张三,李四. Java对象种类多,包含普通类,JavaBean,注解,枚 ...
- 前端——语言——Core JS——《The good part》读书笔记——第六章节(Arrays)
本章介绍数组的内容,Java中的数组在创建时,会分配同等大小的内存空间,一旦创建数组的大小无法改变,如果数据超过数组大小,会进行扩容操作.并且数组的元素类型在创建时必须是已知的,而且只能存放相同数据类 ...
- 前端——语言——Core JS——《The good part》读书笔记——第八章节(Methods)
本章介绍JS核心对象的方法.这些对象包括Array,Function,Number,Object,RegExp,String.除这些常用的核心对象还有Date,JSON. 本章更偏向于API文档,介绍 ...
- 前端——语言——Core JS——《The good part》读书笔记——附录三,四,五(JSLint,铁路图,JSON)
1.JSLint 本书的JSLint部分只是一个引言,详细了解该工具的使用参考http://www.jslint.com/ 2.铁路图 在本书中使用过的铁路图集中放在这部分附录中,其实读完本书之后,没 ...
随机推荐
- BZOJ3932 CQOI2015 任务查询系统 - 主席树,离散化
记录下自己写错的地方吧 1. 区间可能有重复 2. 没有出现的坐标也要计入version (因为询问里可能会有) #include <bits/stdc++.h> using namesp ...
- 安装postman时遇到“无法定位程序输入点 SetDefaultDllDirectories于动态链接库KERNEL32.dll 上.”的问题
安装postman时遇到“无法定位程序输入点 SetDefaultDllDirectories于动态链接库KERNEL32.dll 上.”的问题 解决办法: 1.安装系统更新补丁KB2533623,下 ...
- Virtual DOM(八)
Virtual DOM 这个概念相信大部分人都不会陌生,它产生的前提是浏览器中的 DOM 是很“昂贵"的,为了更直观的感受,我们可以简单的把一个简单的 div 元素的属性都打印出来,如图所示 ...
- IntelliJ IDEA 2019.1.3 最新破解教程【最强 可用至2099年】
本文包括最新[2019.1.2]安装 和[2018.3.2](推荐)安装 ①IntelliJ IDEA 2018.3.2安装永久安装[最强] 一. 在官网下载IDEA安装包 链接:https:// ...
- Python目录结构规范
在设计大型项目时需要规范目录结构. 假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了: Foo/ |-- bin/ | |-- foo | |-- foo/ | |-- tests ...
- opencv:程序运行完保持dos窗口不关闭
(1)在main函数最后加上 system("pause"); 第一种不能加到含有imshow图片显示的结尾:否则会不能显示图片: (2)利用cvWaitKey()函数: 这种能加 ...
- 手机内存卡RAW无法格式化的解决办法
突然出现这个问题,这是麻烦: 网上找了各种办法:什么软件修复,disk等修复,创建新磁盘,新扇到,win自动修复啊:开始----运行框中输入 :convert X: /fs:FAT(X为电脑 ...
- JAVAWEB应用模块(一)登录模块
java后台代码(MD5加密+token验证): import com.smart.ssai.admin.domain.User; import com.smart.ssai.admin.servic ...
- mysql 查询——逻辑查询
--去重查询 distinct select distinct gander from student; --逻辑查询 and or not --查询18-28之间的数据 select *from s ...
- 三、ZigBee无线网络工具
CC2530概述 CC2530是德州仪器Ti公司用于2.4-GHz IEEE 802.15.4.ZigBee 和 RF4CE 应用的一个真正的片上系统(SoC)解决方案,是作为ZigBee无线传 感网 ...