"编写高质量代码"一书笔记

css :

base  :   共用样式

common: 通用控件样式

page: 页面级样式

js

base 位于三层最底层,职责一是封装不同浏览器下js的差异,提供统一的接口,依靠它来完成跨浏览器兼容的工作,职责二是扩展js语言底层提供的接口,让它提供 更多更为易用的接口,base层是给common层和page层提供接口。

common 位于三层的中间,依赖于base层提供的接口,common提供可供复用的组件,它是典型mvc模式中的M,和页面内的具体功能没直接关系,common层的功能是给page层提供组件。可以复用的

page层,

位于三层的最顶端 ,这一层和页面里的具体功能需求直接相关,是mvc模式的c,page层依敕于base层和common层,page层的功能是完成页面内的功能需求。

javascript: 对象编程

反方法写在原型里,可以被所有实例共享,实例化的时候,并不会在实例的内存中再复制 一份,而写在类里的行为,实例化的时候会在每个实例里复制一份。把实例写在内存消耗,没有特殊原因,推荐尽量把行为写在原型里。

用this._age来定义表明是私有的,不能当成公有的属性来调用 。提醒而已。

用get,set 方法来访问属性需要将相关的方法都 放到构造函数和里,和所有方法以都放到原型相比,这么做会占用更多的内存,但它可以更好地保护 属性,

function Animal(name){

var name;

this.getName=function(){

return name;

}

this.setName=function(o){

name=o;

}

}

function有两种不同的用法,作为函数,

直接使用 函数名()调用,this指向window作为类的构造函数,使用new 函数名()调用。this指向实例

命名空间

var GLOBAL={};

GLOBAL.namespace=function(str){

var arr=str.split("."),o=GLOBAL;

for(i=(arr[0]=="GLOBAL")?1:0;i<arr.length;i++){

o[arr[i]]=o[arr[o]]||{};

o=o[arr[i]];

}

}

GLOBAL.namespace("Dom");   //调用

继承代码

function extend(subClass,superClass){

var F=function();

F.prototype=superClass.prototype;

subClass.prototype=new F();

subClass.protype.constructor=subClass;

subClass.superclass=superClass.prototype;

if(superClass.protope.constructor==Object.prototype.constructor){

superClass.prototype.constructor=superClass;

}

}

function Animal(name){

this.name=name;

this.type="animal";

}

Animal.prototype={

say:function(){

alert("i‘m a(an)"+this.type+",my name is "+this.name);

}

}

function Bird(name){

this.constructor.superclass.constructor.apply(this,autuments);

this.type="bird";

}

extend(Bird,Animal);

Bird.prototype.fly=function(){

alert("i‘m flying");

}

var canary=new Bird("xiaocui");

canary.say();     // i‘m a(an) bird,my name is xiaocui

Array

Array.prototype.each=function(fun){

for(var i=0,n=this.length,i<n;i++){

fun(this[i],i);

}

}

Array.prototype.clone=function(){

var o=[];

this.each(function(v,k){

o[k]=v;

})

return o;

}

Array.prototype.map=function(fun){

var o=[];

this.each(function(v,k){

o[k]=fun(v,k);

})

return o;

}

Array.prototype.Delete=function(a){

var o=this.clone();

for(var i=o.length,n=0;i>n;i--){

if(o[i]==a){

a.splice(i,1);

}

}

}

javascript 提供了一些内置类:Array,String,Function等。在javascript中,所有的内置类和自定义类,所有类的祖先类都是Object.如果想对所有对象都扩展方法,可以通过修改Object类的原型实现。

无论在类的构造 函数中还是在原型中,this都指向实例化的对象。

内置类的方法可以重写,但属性却不能重写。

修改内置类的原理型 非常方便,缺点是可能会带来冲突隐患,自定义的可以保护原型不修改,但它需要用new来实例化自定义类,相对麻烦 一些。

如果是小应用,不用过多浮头考虑可维护性,推荐使用前者,如果是大中型应用,需要考虑可维护性,推荐使用后者。

var node=document.getElementById("a");

typeof node         //  object;

对于常规属性,统一使用 node.xxxxx,对于自定义属性,统一使用 node.getAttribute("XXXX");

目标对象    e.target||e.srcElement

好的可维护 性的代码从四个方面获得:

代码的松耦合,高度模板化,将页面内的元素视为一个个模块,相互独立,尽量避免耦合过高的代码,从html,css,javascript,三个层面考虑模块化

良好的注释

注意代码的弹性,在性能和弹性的选择上,一般 情况下以弹性为优先考虑条件

严格按照规范编写代码

时间: 2024-10-13 00:29:10

"编写高质量代码"一书笔记的相关文章

编写高质量代码、学习笔记——Javascript篇

一.良好的编程习惯 1.避免JS冲突 1>使用匿名函数将脚本包起来,减少全局变量,避免冲突. 2>团队项目有必要添加必要注释: 包括功能.编写人员名称.编写人员联系方式.编写时间. 3>使用命名空间,用作不同功能之间的通信--使用一个{}对象类型的变量作为全局变量 <script type="text/JavaScript"> var GLOBAL = {}; GLOABL.namespace = function(str){ var arr = atr.

每周一书-编写高质量代码:改善C程序代码的125个建议

首先说明,本周活动有效时间为2016年8月28日到2016年9月4日.本周为大家送出的书是由机械工业出版社出版,马伟编著的<编写高质量代码:改善C程序代码的125个建议>. 编辑推荐 10余年开发经验的资深C语言专家全面从C语法和C11标准两大方面深入探讨编写高质量C代码的技巧.禁忌和实践 C语言因为既具有高级语言特性,又具有汇编语言特性,所以它是近二十几年来使用较为广泛.生命力较强的编程语言.无论是操作系统.嵌入式系统.普通应用软件,还是移动智能设备开发,它都能够很好地胜任,是公认的强大的语

《编写高质量代码》web前端开发修炼之道-读书笔记

第一章  从网站重构说起 <编写高质量代码>web前端开发修炼之道-读书笔记

《编写高质量代码--Web前端开发修炼之道》读书笔记

前言 这两周参加公司的新项目,采用封闭式开发(项目成员在会议室里开发),晚上加班到很晚,所以没时间和精力写原创博客了,今天就分享下这篇<编写高质量代码--Web前端开发修炼之道>读书笔记吧. 正文 欲精一行,必先通十行. 在前端开发这个领域,一专多能更是非常必要的. table布局缺点: 代码量大,结构混乱: 标签语义不明确,对搜索引擎不友好. css布局:div+css,或者(x)html+css. 代码量少.结构精简.语义清新. 代码量少,浏览器端下载时间就会更短: 语义清晰就会对搜索引擎

《编写高质量代码188个建议》读书笔记

第一章  JavaScript语言基础 一.代码的执行速度决定的因素是: 1.代码量少,运行速度不一定快 2.代码量多,速度也不一定慢 建议1:警惕Unicode代码 javascript代码每个字符都两字节,这样函数名和变量名都可以使用中文来命名 1 <script> 2 var 人名 = "张三"; 3 console.log(人名); 4 5 function 技术(开发){ 6 console.log(开发); 7 } 8 9 技术("哈哈");

编写高质量代码:Web前端开发修炼之道(一)

最近老大给我们买来一些技术方面的书籍,其实很少搬着一本书好好的完整的看完过,每每看电子档的,也是打游击式的看看这章,瞅瞅那章,在那5本书中挑了一本比较单薄的<编写高质量代码web前端开发修炼之道>,看完觉得不错,它从一个整体架构上来说明如何编写高质量代码,而细处也着重说明一些比较重要的技术点,给人一种从高处俯瞰web开发.很完整的感觉,在这感谢老大,谢谢他让我们不停的进步着.下面是我看书过程中的笔记. 第一章:从网站重构说起 没什么好说的,从一个糟糕的老网页实例说明需要将web的结构,样式和行

转载-------编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议1~5)

阅读目录 建议1:不要在常量和变量中出现易混淆的字母 建议2:莫让常量蜕变成变量 建议3:三元操作符的类型务必一致 建议4:避免带有变长参数的方法重载 建议5:别让null值和空值威胁到变长方法              The reasonable man adapts himself to the world; The unreasonable one persists in trying to adapt the world himself. 明白事理的人使自己适应世界:不明事理的人想让世

代码质量优先——《编写高质量代码:改善c程序代码的125个建议》

高质量的代码不但可以促进团队合作.减少bug处理.降低维护成本,对程序员自身的成长也是至关重要的.很难想象一个参考<如何编写无法维护的代码>写代码的程序员技术成长的上限有多么低.为了写出高质量的代码,我们需要听取过来人的改善代码质量的经验,<编写高质量代码:改善c程序代码的125个建议>就是一本能让人写出高质量代码的好书. 本书的第三章<程序控制语句应该保持简洁高效>首先用简练的语言介绍了流程控制结构的概念,然后提供了对if.else.for.do-while.swit

[ 转 ]编写高质量代码:改善Java程序的151个建议

记得3年前刚到公司,同桌同事见我无事可做就借我看<编写高质量代码:改善Java程序的151个建议>这本书,当时看了几页没上心就没研究了.到上个月在公司偶然看到,于是乎又找来看看,我的天,真是非常多的干货,对于我这种静不下心的人真是帮助莫大呀. 看完整本书,也记了不少笔记,我就分享一部分个人觉得有意义的内容,也为了方便以后自己温习. --警惕自增陷阱 i++表示先赋值后自增,而++i表示先自增后赋值.下面的代码返回结果为0,因为lastAdd++有返回值,而返回值是自增前的值(在自增前变量的原始