读 《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设计思想, 设计模式等

你可能感兴趣的:(JavaScript)