前端——语言——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.铁路图 在本书中使用过的铁路图集中放在这部分附录中,其实读完本书之后,没 ...
随机推荐
- python创建字典的三种方式
创建空字典: dict_eq={} print(type(dict)) 直接赋值创建字典: dict_eq={'a':1,'b':2,'c':'adbc'} 通过关键字dict和关键字参数创建 dic ...
- AtCoder Beginner Contest 154 题解
人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...
- VTK坐标系统及视图分割
计算机图像学里广泛应用的坐标系统有四种,分别是:模型坐标系统(model),世界坐标系统(world),视图坐标系统(view)和显示坐标系统(display). 模型坐标系统就是定义模型时所用的坐标 ...
- 页面内容不满屏幕高度时,footer底部显示
底部高度固定的情况下 <style> body,html{ height: 100%; margin: 0; } .content{ min-height: 100%; padding-b ...
- date-fns时间库的基本使用
在react中使用date-fns: import sub_days from 'date-fns/sub_days'; import start_of_week from 'date-fns/sta ...
- springboot之json传参(后台控制层如何接收和解析参数)
一般web端都是用form标签的形式进行表单提交到后台,后台控制层再用相应的实体对象去接收前端传来的json参数. 但是有时候前端界面很复杂,要传入后端的参数是各种标签里面的value值,这些值又是来 ...
- R data formats
R data formats: Rdata Rda Rds 1.概念 rds是R语言中利用二进制保存的源文件,加载readr包以后,使用write_rds(x,file='x.rds')保存文件,re ...
- 《Mongo权威指南》学习手记
1.ObjectId: 是“_id”的默认类型.mongo没有用自增主键原因:多个服务器同步自动增加主键值费时费力. mongo初衷是作分布式数据库,所以能在分片环境中生成唯一的标示符非常重要. Ob ...
- 《深入理解Java虚拟机》读书笔记十
第十一章 晚期(运行期)优化 1.HotSpot虚拟机内的即时编译 解释器与编译器: 许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生 ...
- cmake编译升级
cmake的升级依赖于gcc版本,例如cmake 3.15.3依赖与gcc 4.8以上的版本 1)先升级gcc到4.8 参考:https://blog.csdn.net/Kangshuo2471781 ...