读 《JavaScript: The Good Parts》 有感

提炼出一门语言或技术的 Good Parts, 使用该子集去构造健壮稳固的应用。

我们总是倾向于去学习和使用所有的语言特性,好像凡是新的,凡是提供了的, 就有必要去使用; 这本书告诉我们, 要有选择性地学习和使用。

不是所有的语言特性都需要学习和使用。 学习和使用那些设计不良的特性,不仅耗费大量时间和精力,而且有损项目的可维护性,得不偿失;反之,学习那些优良的部分,不仅可以节省时间,腾出更多时间和精力去做更重要的事情,而且有助于将事情做好,提高收益/学习比。

富有技巧性的HACKER可以欣赏其精巧的构思和利用漏洞的能力,但不适宜用在实际开发中。

Javascript 的优良子集:

1.   简单松散的类型系统,主要是 布尔、字符串和数值 三种类型,undefined, null 两个特殊值;

2.   函数是Javascript 的枢纽对象, 函数型编程范式; 值得重点学习和探讨;

3.   基于原型继承的动态对象机制,值得重点学习和探讨;

4.   容易创建和操作对象和数组, JSON 数据交换格式, 便于使用;

引申一下, 同样可以定义自己的开发子集, 依靠这些元素实现高效可靠的开发活动。

1.   编程语言: 至少熟悉六种编程语言,掌握两种编程语言。 “熟悉”是指大量学习和使用过,“掌握”是指能够使用该语言 构建大型可靠的软件系统。

一种过程式,一种对象式,一种函数式, 一种声明式, 一种客户端语言,一种脚本语言。 例如, C / Java / Clisp / SQL / JavaScript / Python

2.   编程工具: 至少一种编辑器,一种IDE, 一种项目构建工具, 一种版本控制工具, 一种控制台。 例如 Vim / Eclipse / Maven / Svn / Shell (cygwin)

3.   编程方法: 自顶向下,意图导引,自底向上; First Right, then Good ; 预先设计, 及早动手; 迭代式开发、发布、反馈和改进 ; 预估时间;

4.   编程风格: K&R C ,  Java 编程规范, 排版整洁,代码简洁无冗余, 一致, 使用地道表达范式

5.   编程模型: 串行, 并发, 多进程, 多线程, MapReduce , B/S , 异步, 回调,阻塞, 非阻塞

6    编程思想: 过程式, 对象式, 函数式,声明式, 原语, 集合, 组合, 抽象, 分治,

7.   常用算法: 分治, 递归,动态规划, 时空权衡; 优先级算法;问题转化;

8.   排序: 插入排序, 快速排序, 堆排序, 归并排序;

9.   搜索:  顺序搜索, 二分搜索, 哈希搜索, 分段并行搜索;

10.   数据结构:  【一维或二维】数组, 链表,栈,队列, 树, 字符串, 哈希表;  mysql

11.   文本处理: find , grep,  awk,  sed, 正则表达式;

12.   设计模式: 工厂方法, 单例,原型, 模板方法,策略,  观察者,  责任链, 组合, 命令, 代理,外观,适配器,装饰器,迭代器

13.   进程与网络: ps,  top,  任务管理器 ;  netstat, ssh, scp, socket , http,

14.   开发框架: Servlet, Spring, Struts, ibatis ,  Jquery , Extjs,  等

15.   常用组件: 日志(common-logging) ,  实用工具库 (字符串、日期函数或工具类) ,

16.   运行容器: apacheHttp ,  tomcat,  jetty,  nginx ,  浏览器,

17.   软件架构: MVC ; view-controller- service - dao (api) - db ;工厂、管道与过滤器 ;  事件驱动;

18.   单元测试: 参数组合自动生成, 等价划分类, 边界测试, 空测试, 交叉检验, 逆向检验,

19.   代码组织: 头文件, 类文件,包机制,名字空间,

20.   软件工程: 模块化, 对象, 封装,实现隐藏, 约定界面,

21.   测量技术: 性能测量,time

22.   学习网站: Csdn ,  iteye,  infoq,  stackoverflow , 开源项目网站,个人博客, google ,  baidu,

23.   经典书籍: 计算机程序设计艺术, 编程珠玑, SICP , 深入理解计算机系统, 程序设计实践 , Linux/Unix设计思想, 设计模式等

时间: 2024-10-26 22:43:34

读 《JavaScript: The Good Parts》 有感的相关文章

读{人件}有感

                                                                                                   读<人件>有感 本书共分为六个部分,分别为管理人力资源模块,办公环境模块,正确的人模块,高效团队养成模块,沃土模块与快乐的工作六个模块. 在第一部分中:具体描述了人的工作机制,人是非模块化的,将模块化适用于个人是起不到效果的,而在我们大多数的工作中,问题更多在于社会学的领域范畴,而非技术上的,我们的

读架构漫谈有感

读文章伊始感觉文章并没有像其他文章一样引用了大量的专业术语,文章的例子都非常浅显易懂所以以我的水平也可以看懂.对于软件架构虽然早就听过但是还是这学期准确是这周才开始学习架构的概念,在有一点点理解的基础上读了这篇文章,文章开始引出了架构的概念然后步步深入其实刚开始都的时候我并不是很懂甚至有一些疑惑.作者提到当一个群体产生的时候由于不同的人擅长不同导致了分工的不同.我在想当时的人类就有这种明确的分工合作的意识么而且人类并不一定只做一件事他们肯定还要做其他的事情,后来我继续读的时候才发现,所谓的分工合

学软件测试有感

以前一直以为软件测试这一项是微不足道的一项,因为一个好的程序从设计开始就应该很完善,一直到设计完成,应该存在的Bug很少,最近经过编程实践和上课才明白软件测试,原来那么重要. 最近我们的助教给我评论程序,我还是犯了老毛病,没有进行大量的优质的单元测试,到时程序有Bug,对输入情况的分析不够完整.以前的我就这样,程序只要运行处一个看着没错的结果,就算自己完成任务了,也就不再看着个程序,更别说单元测试了.但通过上课听王建民老师讲的,软件测试人员拿整个团队里工资最多,听到这个,我感到震惊,一个我认为无

优化MySQL,还是使用缓存?读一篇文章有感

今天我想对一个Greenfield项目上可以采用的各种性能优化策略作个对比.换言之,该项目没有之前决策强加给它的各种约束限制,也还没有被优化过. 具体来说,我想比较的两种优化策略是优化MySQL和缓存.提前指出,这些优化是正交的,唯一让你选择其中一者而不是另一者的原因是他们都耗费了资源,即开发时间. 优化MySQL 优化MySQL时,一般会先查看发送给mysql的查询语句,然后运行explain命令.稍加审查后很常见的做法是增加索引或者对模式做一些调整. 优点 1.一个经过优化的查询对于所有使用

读 大数据 有感

最小数据集(Minimum Data Set,MDS)最小数据集的概念起源于美国的医疗领域,用来统一医疗账单.最小数据集是指通过收集最少的数据,最好地掌握一个研究对象所具有的特点或一件事情.一份工作所处的状态,其核心是针对被观察的对象建立一套精简实用的数据指标.最小数据集的出现,最早是因为不同组织之间信息交换的需要,例如,两个医院之间,医院和政府医疗管理部门,医院和保险公司之间以及一些社会福利部门之间,都有交换信息的需要.随着最小数据集的推广,越来越多的社会组织.地方政府和联邦政府的业务部门之间

最近读cocoaui源代码有感

上半年为了做一个ios的应用,引入了cocoaui库,主要是用来布局ios界面,发现简化了不少代码和工作量.因为在写第一个ios应用的时候,用的代码布局,在适配4s和6的机型时候,几乎被搞死,大量的约束定义充斥在代码中,惨不忍睹. cocoaui的作者是ssdb的作者ideawu,在微博里面比较活跃,有问题at他一般很快就会有回应.ssdb是一个类似于redis的nosql数据库:像这样一个在客户端和服务器领域都有建树的人还是很少的.我等普普通通的程序员,距离这种大神还是有一些距离,不过不能气馁

读《大学有感》④

<大学之路>这本书里面吴军博士用了大量章节来写他去参观的英美高校,将每所大学的发展历程.特色.校园环境等都写了出来,不难看出,英美高校每所大学的特点都不一样,吸引人的地方也不一样,带给每个人的感觉也不一样.所以将这下册读完之后,这次的读书笔记我想将这些高校所带给我的不同的感受一一写出来,同时也总结整本书带给我的启发与感想. 作者在写美国高校前先写了英国的剑桥和牛津两所高校.两所学校都运用了学院制,便于学生们相互学习.每个学员的管理是非常独立的,也都有各自的特色.教授也会住在学院里,有教授制这样

第一次作业:读优秀博文有感

摘要:本文介绍了我阅读优秀博文之后结合个人经历的感想,包括为什么会选择计算机这个专业,我学习计算机的条件,与优秀博文博主的比较:还有我在计算机系里学习的一些看法经历:最后介绍我的未来规划. 第一部分:结缘计算机 时光荏苒,转眼大三,再想想当初选择计算机这个专业,说实话我已经记不清楚当初为什么会在第一志愿上填这个专业.思考一下,当时可能是这么想的,计算机毕业后可以挣得钱多一点,而且集美大学在厦门,离家近,我的高考分数这个专业比较稳.然后我学习计算机的条件,说出来你可能不信,我还没发现我有这一方面的

用心去感受和倾听--读杨澜访谈录有感

本来是不打算写书评的,看书是一种输入的过程,而码字是一个输出的过程,这个过程需要思考,回忆,联想,总结.是一个脑力活动,但是最近又想到读书的几个过程,颇觉我应该在每次看完书后,写点什么,就算留点回忆吧,毕竟世上的书籍就如同柳树飘飞的柳絮,能够遇见一本书,并耐心的读完,是我和书的缘分. 每次看杨澜的文字,都会有一种安宁的感觉,她有一种魅力能够让你静下心来走进她的访问,感受别人不一样的生活.前些天在图书馆借了一本某周刊的大师访谈录,看了几篇,实在看不下去了,丢置在床边,因为他的访问就像是一片叶子浮在

读boost::multi_array有感,多维数组实现(非类型模板,偏特化)

开发环境: VS2002(VC7) 本文做如下简化: 1,假定所有维元素都是5. 2,不考虑const的[]. 3,由于只是熟悉原理,不考虑各种异常情况. 问题一,请实现一个一维整形数组,只需重载[]. 问题二,请实现一个二维整形数组,只需重载[]. 源码如下: class CIntArray1 { public: int& operator[](int index) { return m_pData[index]; } protected: int m_pData[5]; }; class C