2010年4月27日星期二

Java注释规范

注释的原则

1 注释形 式统一

在整个应用程序中,使用具有一致 的标点和结构的样式来构造注释。如果在其他项目组发现他们的注释规范与这份文档不同,按照他们的规范写代码,不要试图在既成的规范系统中引入新的规范。

2 注释的 简洁

内容要简单、明了、含义准确,防 止注释的多义性,错误的注释不但无益反而有害。

3 注释的 一致性

在写代码之前或者边写代码边写注 释,因为以后很可能没有时间来这样做。另外,如果有机会复查已编写的代码,在今天看来很明显的东西六周以后或许就不明显了。通常描述性注释先于代码创建, 解释性注释在开发过程中创建,提示性注释在代码完成之后创建。修改代码的同时修改相应的注释,以保证代码与注释的同步。

4 注释的 位置

保证注释与其描述的代码相邻,即 注释的就近原则。对代码的注释应放在其上方相邻或右方的位置,不可放在下方。避免在代码行的末尾添加注释;行尾注释使代码更难阅读。不过在批注变量声明 时,行尾注释是合适的;在这种情况下,将所有行尾注释要对齐。

5 注释的 数量

注释必不可少,但也不应过多,在 实际的代码规范中,要求注释占程序代码的比例达到20%左右。注释是对代码的“提示”,而不是文档,程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱,注释的花样要少。不要被动的为写注释而写 注释。

6、删除无用注释

在代码交付或部署发布之前,必须 删掉临时的或无关的注释,以避免在日后的维护工作中产生混乱。

7 复杂的 注释

如果需要用注释来解释复杂的代 码,请检查此代码以确定是否应该重写它。尽一切可能不注释难以理解的代码,而应该重写它。尽管一般不应该为了使代码更简单便于使用而牺牲性能,但必须保持 性能和可维护性之间的平衡。

8 多余的 注释

描述程序功能和程序各组成部分相 互关系的高级注释是最有用的,而逐行解释程序如何工作的低级注释则不利于读、写和修改,是不必要的,也是难以维护的。避免每行代码都使用注释。如果代码本 来就是清楚、一目了然的则不加注释,避免多余的或不适当的注释出现。

9、必加的注释

典型算法必须有注释。在代码不明 晰或不可移植处必须有注释。在代码修改处加上修改标识的注释。在循环和逻辑分支组成的代码中添加注释。为了防止问题反复出现,对错误修复和解决方法的代码 使用注释,尤其是在团队环境中。

10、注释在编译代码时会被忽略,不 编译到最后的可执行文件中,所以注释不

会增加可执行文件的大小。

四、JAVA注释技巧

1、空行和空白字符也是一种特殊注 释。利用缩进和空行,使代码与注释容易区

别,并协调美观。

2、当代码比较长,特别是有多重嵌套 时,为了使层次清晰,应当在一些段落的

结束处加注释(在闭合的右花括号 后注释该闭合所对应的起点),注释不能

写得很长,只要能表示是哪个控制 语句控制范围的结束即可,这样便于阅读。

3、将注释与注释分隔符用一个空格分 开,在没有颜色提示的情况下查看注释时,

这样做会使注释很明显且容易被找 到。

4、不允许给块注释的周围加上外框。 这样看起来可能很漂亮,但是难于维护。

5、每行注释(连同代码)不要超过120个字(1024×768),最好不要超过80

(800×600)

6Java编辑器(IDE)注释快捷方式。Ctrl+/ 注释当前行,再按则取消注释。

7、对于多行代码的注释,尽量不采用 “/*......*/”,而采用多行“//”注释,

这样虽然麻烦,但是在做屏蔽调试 时不用查找配对的“/*......*/”。

8、注释作为代码切换开关,用于临时 测试屏蔽某些代码。

例一:

//*/

   codeSegement1;

//*/

改动第一行就成了:

/*/

   codeSegement1;

//*/

例二: 第一 段有效,第二段被注释

//*/

   codeSegement1;

/*/

   codeSegement2;

//*/

只需删除第一行的/就可以变成:

//----------------------第一段被注释,第二段有效

/*/

   codeSegement1;

/*/

   codeSegement2;

//*/

五、JAVA注释方法及格式

1、单行(single-line)--短注释://……   

单独行注释:在代码中单起一行注 释, 注释前最好有一行空行,并与其后的代码具有一样的缩进层级。如果单行无法完成,则应采用块注释。

注释格式:/* 注释内容 */

 

行头注释:在代码行的开头进行注 释。主要为了使该行代码失去意义。

注释格式:// 注释内容

  

行尾注释:尾端(trailing)--极短的注释,在代码行的行尾进行注释。一般与代码行后空8(至少4)个格,所有注释必须对齐。

注释格式:代码 + 8(至少4)个空格 + // 注释内容

2、块(block)--块注释:/*……*/

注释若干行,通常用于提供文件、 方法、数据结构等的意义与用途的说明,或者算法的描述。一般位于一个文件或者一个方法的前面,起到引导的作用,也可以根据需要放在合适的位置。这种域注释 不会出现在HTML报告中。注释格式通常写成:

/*

  * 注释内容

  */

3、文档注释:/**……*/

注释若干行,并写入javadoc文档。每个文档注释都会被置于注释定界符

/**......*/之中,注释文 档将用来生成HTML格式的代码报告,所以注释文

档必须书写在类、域、构造函数、 方法,以及字段(field)定义之前。注释文档由两部分组成——描述、块标记。注释文档的格式如下:

/**

* The doGet method of the servlet.

* This method is called when a form has its tag value method

   * equals to get.

* @param request

*  the request send by the client to the server

* @param response

*  the response send by the server to the client

* @throws ServletException

*  if an error occurred

* @throws IOException

*  if an error occurred

*/

public void doGet (HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

    doPost(request, response);

}

前两行为描述,描述完毕后,由@符号起头为块标记注释。更多有关文档注

释和javadoc的详细资料,参见javadoc的主页: http://java.sun.com/javadoc/index.html

4javadoc注释标签语法

@author    对类的说明 标明开发该类模块的作者

@version   对类的说明 标明该类模块的版本

@see      对类、属性、方法的说明 参考转向,也就是相关主题

@param    对方法的说明 对方法中某参数的说明

@return    对方法的说明 对方法返回值的说明

@exception  对方法的说明 对方法可能抛出的异常进行说明

六、JAVA注释具体实现

1、源文件注释

源文件注释采用 /** …… */,在每个源文件的头部要有必要的注释信息,包括:文件名;文件编号;版本号;作者;创建时间;文件描述包括本文件历史修改记录等。中文注释模 版:

/**

* :

    * CopyRright (c) 2008-xxxx:

* 文件编号:

* 人:

*     期:

* 人:

*    期:

*    述:

* 号:

*/

 

2、类(模块)注释:

类(模块)注释采用 /** …… */,在每个类(模块)的头部要有必要的注释信息,包括:工程名;类(模块)编号;命名空间;类可以运行的JDK版本;版本号;作者;创建时间;类(模块)功能描述(如功能、主要算法、内部各部分之间的关系、该类 与其类的关系等,必要时还要有一些如特别的软硬件要求等说明);主要函数或过程清单及本类(模块)历史修改记录等。

英文注释模版:

/**

* CopyRright (c)2008-xxxx:   <展望软件Forsoft >                         

    * Project:                     <项目工程名 >                                         

* Module ID:   <(模块)类编号,可以引用系统设计中的类编号>   

    * Comments:  <对此类的描述,可以引用系统设计中的描述>                                           

* JDK version used:      <JDK1.6>                             

* Namespace:           <命名空间>                             

* Author        <作者中文名或拼音缩写>                

* Create Date  <创建日期,格式:YYYY-MM-DD>

* Modified By   <修改人中文名或拼音缩写>                                         

* Modified Date:  <修改日期,格式:YYYY-MM-DD>                                   

    * Why & What is modified  <修改原因描 述>   

* Version:                  <版本号>                      

*/

如果模块只进行部分少量代码的修 改时,则每次修改须添加以下注释:

//Rewriter

//Rewrite Date<修改日期:格式YYYY-MM-DD> Start1

/* 原代码内容*/

//End1

将原代码内容注释掉,然后添加新 代码使用以下注释:

//Added by

//Add date<添加日期,格式:YYYY-MM-DD> Start2

//End2

如果模块输入输出参数或功能结构 有较大修改,则每次修改必须添加以下

注释:

//Log ID<Log编号,1开始一次增加>

//Depiction<对此修改的描述>

//Writer:修改者中文名

//Rewrite Date<模块修改日期,格式:YYYY-MM-DD>

 

2、接口注释:

接口注释采用 /** …… */,在满足类注释的基础之上,接口注释应该包含描述接口的目的、它应如何被使用以及如何不被使用,块标记部分必须注明作者和版本。在接口注释清 楚的前提下对应的实现类可以不加注释。

 

3、构造函数注释:

构造函数注释采用 /** …… */,描述部分注明构造函数的作用,不一定有块标记部分。

注释模版一:

/**

* 默认构造函数

*/

注释模版二:

/**

* Description :       带参数构造函数,

*                       初始化模式名,名称和数据源类型

* @param schema   模式名

* @param name   名称

* @param type 数据 源类型

*/

 

4、函数注释:

函数注释采用 /** ……*/,在每个函数或者过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等。函数 注释里面可以不出现版本号(@version)。

注释模版一:

/**

  * :

  * 功能描述:

* 输入参数:     <按照参数定义顺序>

*             <@param后面空格后跟着参数的变量名字

*            (不是类型),空格后跟着对该参数的描述。>

*

* :  - 类型 <说明>

*            <返回为空(void)的构造函数或者函数,

*            @return可以省略; 如果返回值就是输入参数,必须 *            用与输入参数的@param相同的描述信息; 必要的时*            候注明特殊条件写的返回值。>

*     常:<按照异常名字的字母顺序>

* :

*     :

* :

*     :

*/

注释模版二:

/**

* FunName:           getFirstSpell

  * Description :      获取汉字拼音首字母的字符串,

*                   被生成百家姓函数调用

  * @param         str the String是包含汉字的字符串

  * @return String:汉字返回拼音首字母字符串;

*                  英文字母返回对应的大写字母;

*                 其他非简体汉字返回 '0'

* @Author:       ghc

* @Create Date: 2008-07-02

*/

 

5、方法注释:

方法注释采用 /** …… */,对于设置 (Set 方法 ) 与获取 (Get 方法 ) 成员的方法,在成员变量已有说明的情况下,可以不加注释;普通成员方法要求说明完成什么功能,参数含义是什么且返回值什么;另外方法的创建时 间必须注释清楚,为将来的维护和阅读提供宝贵线索。

 

6、方法内部注释:

控制结构,代码做了些什么以及为 什么这样做,处理顺序等,特别是复杂的逻辑处理部分,要尽可能的给出详细的注释。

   

7 全局变 量注释:

要有较详细的注释,包括对其功 能、取值范围、哪些函数或者过程存取以及存取时注意事项等的说明。

 

8、局部(中间)变量注释:

主要变量必须有注释,无特别意义 的情况下可以不加注释。

 

9、实参/参数注释:

参数含义、及其它任何约束或前提 条件。

 

10、字段/属性注释: 字段描述,属性说明。

 

11、常量:常量通常具有一定的实际 意义,要定义相应说明。

http://blog.csdn.net/jiaguanghan123/archive/2009/12/30/5106641.aspx

2010年最骚最贱的100句话,你懂的

本帖最后由 sosotiim 于 2010-4-27 09:48 编辑

1. 男人忽悠女人,叫调戏。女人忽悠男人,叫勾引。男女相互忽悠,叫爱情。

2. 穷玩车,富玩表,牛bi加班敲电脑。

3. 把寂寞刻在酒瓶子上,喝进膀胱里,尿出来,让寂寞洒满一地!

4. 用7%耕地养活占世界22%人口根本不算什么成就。看看日本,用世界1.5%的人口产出了世界90%的毛片才叫牛B。

5. 我凝视你地眼睛 发现了深黑色的寂寞,你说那是因为夜太短.你凝视我的眼睛, 发现了火红的刺么忽,我说那是因为睡电褥子睡地――上火....

6. 生活中,每个人都是演员,而装B的人只是其中的佼佼者

7. 一晚上��潮,怎么满足生活�低潮.

8. 我喜欢闷**人。在别人面前闷。在我面前骚。

9. 我学会了喝酒,是想把寂寞和悲伤给淹没,没想到,他们他妈学会了游泳....

10. 古人说,一寸长一寸强,一寸小一寸巧――我有时候强,有时候巧。

11. 江山如此多交,引无数英雄折在你的小蛮腰,我是一只老家巧,想要搞呀却搞也搞不了,我寻寻觅觅寻寻觅觅一个34D的怀抱,这样的要求显然喝高……

12. 无聊就是无人跟你聊天。

13. 问:手机最常用的功能是什么?答:看时间。 问:手机最令人心跳的功能是什么?答:震动

14. 特想每天穿着趿拉板儿、拎着暖壶上街打轩尼诗XO

15. 你失恋的次数比中国足球失利的次数都多。

16. 人的桃花运,跟生理周期一样,都是一阵一阵的。

17. 我好羡慕她,受伤后可以泡吧;我好羡慕他,受伤后可以泡仨。

18. 精英,精得跟鹰似的。

19. 我比贫下中农还贫!

20. 日本最有价值潜力的品牌――*V,比LV牛 多了。。。

21. 前世的二百五次回眸,才换来jing液的擦奸而过。

22. 佛说人的生命在呼吸之间,我听闻暗自惭愧,因为我的生命还纠缠在QQ之间。

23. 真正的装逼,敢于直面自己没有厚度的脸皮~

24. 人在江湖飘,谁能不挨刀?江湖风浪高,酒色似钢刀。媚眼横江山,玉臂领**,挨刀就挨刀,风月任我啸。人在江湖飘,一刀狠一刀。刀刀疾如电,不离后脑勺。 天涯有芳草,芳草是毒药。杨柳万千条,裤衩剩一条。

25. 当哥一个人在仰望天空的时候,哥并不想寻找什么。哥只是寂寞。

26. 干柴遇烈火,那叫明骚;湿柴遇小火苗,那才是闷骚

27. 叔到用时方恨嫂。

28. 文字像射惊,写多了,射多了,都会稀。泼墨经年,恰似纵欲,却又何尝不是初登涅磐,一种风流

29. 今晚有空么?来我家吃面、洗澡吧!(相当隐晦)

30. 药补不如食补,食补不如阴阳互补。

31. 千里马常有,而母千里马不常有。

32. 所谓"特困户",其实共有两种――因缺钱而特困、因缺觉而特困。末将不才,两款都是。

33. 按照政治书上的说法,统治这个国家的不是别人,正是我这个无产阶级.我领导富农,地主,资本家和一切有钱的坏蛋,一起奔向Communist主义!!!!

34. 故人送别望三望 知己同路唱三唱 情人共枕上三上 大爷掘腚放三放 一放 两放 再三放 你丫指定脑震荡

35. 大姨妈都来了,安全期还会远么?

36. 长期低价收购各类闲散姑娘。型号不限。详情面议。

37. 我想吃糖白兔大奶。

38. 人在江湖飘,谁能不闷骚.

39. 哥不寂寞,因为有寂寞陪着哥.

40. 哥们心理素质好得,就跟没心理素质一样。

41. 闷骚――就是有礼貌的Y D

42. 一次劣质的**还不如呆在家里意淫。

43. 一个成功的男人就是能够挣到比妻子花的钱更多的钱,一个成功的女人就是能够找到这样一个男人。

44. 花心大萝卜遭遇水性小杨花,这将是性骚动中,一场重量级的对撼。

45. 有小资的头脑,有愤青的上半身,有朋克的下半身,还要有歌特的心灵。――这就是新时代的四有新人。

46. 有心的无力,有力的无钱,有钱的无情,有情的无缘,有缘的无分,有分的正闹着离婚。

47. 我不是为了钱,我是因为生活。我不是要上床,我是因为爱你。

48. 天气凉了,请各位及时加衣,注意保暖思淫欲。

49. 刷牙是一件悲喜交加的事情,因为一手拿着杯具,一手拿着洗具。

50. 生活就像超级女声,撑到最后的都是纯爷们。

51. 酒总是令男人想起女人,酒也令女人想起男人。唯一不同的是,男人喝了酒后,会想到各种女人;女人喝了酒后,往往只会想到一个男人,大多数时候想到的是一个 抛弃了她的男人。

52.再一次祝福那些猫扑美女帖里狂发泄的网友们们:握紧手中的中华铅笔,一往情深注视笔杆上的字:2B!
53. 如果她爱我像肯德基那么多,看见阿一鲍鱼她自然会出轨.如果我对他的忠诚像伊利牛奶那么甜,给我一碗冰糖燕窝我也肯定会背叛.

54. 牛bi的外表藏着一颗二bi的心...

55. 结婚就是给自由穿件棉衣,活动起来不方便,但会很温暖。

56. 哥哥面前一条弯弯的河;妹妹胸前荡起层层的波。

57. 眼泪是最霸道的暗器,古龙说:女人的眼泪简直比暗器还可怕,无论多厉害的暗器,你至少还能躲,女人的眼泪却连躲也躲不了。无论多厉害的暗器最多不过在你身 上打出几个洞来,女人的眼泪却能将你的心滴碎。

58. 人性人性,就是人得有性,就是不知道自己姓什么,也得有性要求。

59. 我的愿望:每天喝到自然醉,每天睡到自然醒.

60. 女人真奇怪,不该知道的事,她们全知道;该知道的事,她们反而不知道

61. 古人讲:三思而后行;现代人讲究:34而后D。

62. 喜欢喝酒的人,也喜欢女人,更喜欢朋友。因为在喝酒的时候,容易想起女人,谈论朋友。

63. 世界很大,一张床很小,床上的两个人曾经很好,却无法到老。

64. 众里寻她千百度,蓦然回首,那人依旧对我不屑一顾。

65. 念了十几年书,想起来还是幼儿园比较好混。

66. 谢谢你,谢你大爷,谢你全家,谢你祖宗十八代。(见过这样感谢别人的吗?)

67. 工资降了叫负增长,还是增长;女奸男叫被动强+奸,还是强+奸~

68. 感情是场骗局,我顶多算个卧底~

69. 我当年也是个痴情的种子,结果下了场雨……淹死了。

70. 春天是感冒和感情高发的季节。有人不小心感冒了,有人不小心恋爱了,我属于前者。

71. 老规劝:闺女,要适当吃一点才有劲减肥啊。

72. 有次喝高了打车,的哥说:喝了吧?我说:喝不少。的哥说:我也喝了。吓得我拉门就要下车。的哥说:我一会回家也喝。

73. 我唯一财产就是硬盘上那80G毛片。

74. 虽然我长的不是很帅,但小时候也有人夸我左边鼻孔很偶像派。

75. 心不跟爱一起走,说好就一宿.

76. 哥是个传说,不要问哥是哪个单位的.

77. 出问题先从自己身上找原因,别一便秘就怪地球没引力。

78. 苏丹红吃了还有十年潜伏期呢. 这结婚蛋糕一吃 自由利马就没了

79. 爱是一种奢侈品。如同巴黎橱窗里的狐皮大衣,那么眩目、那么迷人,可是上面的标价会让人清醒过来。爱亦是奢侈品,只能远远的看着,别幻想或触摸它因为那需 要合适的时间、合适的人相遇在合适的地点,缺一不可。

80. 炮轰的脑袋还梳个雷劈的逢。

91. 上天安排我做了个多情的人,却又安排我遭遇了无数绝情的人,所以我最终把自己磨练成了一个滥情的人。别人是人见人爱,我是见人爱人

92. 80后的重要任务是制造08后。

93. 事实证明,感情经得起风雨,却经不起平淡;友情经得起平淡,却经不起风雨。

94. 人家有的是背景,而我有的只是背影~~。

95. 是金子总要发光的,但当满地都是金子的时候,我自己也不知道自己是哪颗了。

96. 提醒大家要学会修自己的笔记本,这是很重要的!从前有个人,他不会修自己的笔记本......后来的事情大家都知道了。

97. 有人说我QQ上不说话不和她交流,我想怎么会呢?只要不交配,怎么交流都行啊。

98. 我不是广场上算卦的,唠不出那么多你爱听的嗑。

99. 不是故事的结局不够好,而是我们对故事的要求过多!

100. 爱情就像两个拉橡皮筋的人,受伤的总是不愿放手的那个。

2010年4月26日星期一

[Tech]jsp页面传值乱码问题的解决方案

比如以下两个jsp页面之间的传递:

a.jsp页面内容:
< %@ page language=" java" import=" java.util.*" pageEncoding=" GB2312" %>
< form action=" b.jsp" >
      name:< input type=text name=name>
      < input type=submit>
< /form>

b.jsp页面内容:
< %@ page language=" java" import=" java.util.*" pageEncoding=" GB2312" %>
< %
String name=request.getParameter(" name" );
%>
< body>
      < %=name%>
< /body>

现象:中文乱码,比如“??????”

解决方法如下:

方法一:-----------尝试过,有效但确实不可取
1.                在b.jsp中把pageEncoding=" GB2312" 改为pageEncoding=" ISO8859-1"
                        虽然这样b.jsp页面显示的内容还是乱码,但是不是那种“??????”的乱码,
                        而是一些特殊字符
2.                然后在浏览器中查看菜单中修改成GB2312的编码,这时乱码就显示中文了。
3.                但是这种方法是不可行的。

方法二:---------- 尝试过,有效。我的部分页面就是用该方法
1.                在b.jsp中把String name=request.getParameter(" name" ); 修改为
                        String name=new String(request.getParameter(" name" ).getBytes(" ISO-8859-1" )," GB2312" );
2.                这时再在页面上显示,则就是中文了。
3.                但是我个人不喜欢这种方法,因为编写起来代码非常繁琐

方法三:
1.                有人说修改get/post的传值方式,但是这是有前提的,
                        如果只是把get方式修改成post方式,页面结果还是乱码!
2.                前提你必须配置了过滤器,若果你只是配置了过滤器,
                        则传值方式必须是:post方式才不是乱码,如果是get方式照样是乱码!
3.                过滤器的配置,我想大家都能有,我就不说了

方法四:
1.                有人说配置tomcat的配置文件server.xml里这句:
                          < Connector URIEncoding=" GB2312"
                                port=" 8080"     maxHttpHeaderSize=" 8192"
                            maxThreads=" 150" minSpareThreads=" 25" maxSpareThreads=" 75"
                            enableLookups=" false" redirectPort=" 8443" acceptCount=" 100"
                            connectionTimeout=" 20000" disableUploadTimeout=" true" />

                                加上这句:URIEncoding=" GB2312"

2.                虽然可以但是有前提的,若果你过滤器没有配置,
                        则只是配置了server.xml文件,这样只有在表单是get传值时候才可以!
                        当是post方式时,照样是乱码!
                        *这时我们就可以看出在tomcat5中的post与get传值方式是不一样的*
                        *有人要问有没有一种方法让传值使用get方式或post方式都好用呢,
                        下面就是我推荐的方法五*

方法五:
1.                其实很简单,就是同时实现方法三又实现方法四!
2.                就是先配置过滤器,又配置server.xml文件,都设置成GB2312的编码
3.                这样无论是post还是get方式的表单传值,中文都不会是乱码!

 

转自:http://www.blogjava.net/mimi-van/archive/2008/01/22/177039.html

[JS]那些相见恨晚的 JavaScript 技巧

JavaScript 的成功让人津津乐道,为 Web 网页编写 JavaScript 代码已经是所有 Web 设计师的基本功,这门有趣的语言蕴藏着许多不为人熟知的东西,即使多年的 JavaScript 程序员,也未能完全吃透。本文从7个方面讲述 JavaScript 中那些你不很熟知但非常实用的技巧。

简略语句
JavaScript 可以使用简略语句快速创建对象和数组,比如下面的代码:



可以使用简略语句如下:



对象 car 就此创建,不过需要特别注意,结束花括号前一定不要加 ";" 否则在 IE 会遇到很大麻烦。

创建数组的传统方法是:



使用简略语句则:



另一个可以使用简略语句的地方是条件判断语句:




可以简略为:


JSON 数据格式
JSON 是 "JavaScript Object Notation" 的缩写,由 Douglas Crockford 设计,JSON 改变了 JavaScript 在缓存复杂数据格式方面的困境,如下例,假如你要描述一个乐队,可以这样写:



你可以在 JavaScript 中直接使用 JSON,甚至作为某些 API 的返回数据对象,以下代码调用著名书签网站 delicious.com 的一个 API,返回你在该网站的所有书签,并显示在你自己的网站:


JavaScript 本地函数 (Math, Array 和 String)
JavaScript 有很多内置函数,有效的使用,可以避免很多不必要的代码,比如,从一个数组中找出最大值,传统的方法是:



使用内置函数可以更容易实现:



另一个方法是使用 Math.max() 方法:



你可以用这个方法帮助探测浏览器



这解决了 IE 浏览器的一个问题,通过这种方法,你总是可以找到那个正确的值,因为浏览器不支持的那个值会返回 undefined。

还可以使用 JavaScript 内置的 split() 和 join() 函数处理 HTML 对象的 CSS 类名,如果 HTML 对象的类名是空格隔开的多个名字,你在为它追加或删除一个 CSS 类名的时候需要特别注意,如果该对象还没有类名属性,可以直接将新的类名赋予它,如果已经存在类名,新增的类名前必须有一个空格,用传统的 JavaScript 方法是这样实现的:



使用 split 和 join 方法则直观优雅得多:


事件代理
与其在 HTML 文档中设计一堆事件,不如直接设计一个事件代理,举例说明,假如你有一些链接,用户点击后不想打开链接,而是执行某个事件,HTML 代码如下:



传统的事件处理是遍历各个链接,加上各自的事件处理:



使用事件代理,可以直接处理,无需遍历:


匿名函数与 Module 模式
JavaScript 的一个问题是,任何变量,函数或是对象,除非是在某个函数内部定义,否则,就是全局的,意味着同一网页的别的代码可以访问并改写这个变量(ECMA 的 JavaScript 5 已经改变了这一状况 - 译者),使用匿名函数,你可以绕过这一问题。

比如,你有这样一段代码,很显然,变量 name, age, status 将成为全局变量



为了避免这一问题,你可以使用匿名函数:



如果这个函数不会被调用,可以更直接为:



如果要访问其中的对象或函数,可以:



这就是所谓 Module 模式或单例模式(Singleton),该模式为 Douglas Crockford 所推崇,并被大量应用在 Yahoo User Interface Library YUI

假如你想在别的地方调用里面的方法,又不想在调用前使用 myApplication 这个对象名,可以在匿名函数中返回这些方法,甚至用简称返回:


代码配置
别人使用你编写的 JavaScript 代码的时候,难免会更改某些代码,但这会很困难,因为不是每个人都很容易读懂别人的代码,与其这样,不如创建一个代码配置对象,别人只需要在这个对象中更 改某些配置即可实现代码的更改。这里有一篇 JavaScript 配置对象详解的文章,简单说:

  • 在代码中创建一个叫做 configuration 的对象
  • 里面保存所有可以更改的配置,如 CSS ID 和类名,按钮的标签文字,描述性文字,本地化语言设置
  • 将该对象设置为全局对象,以便别人直接访问并改写

你应当在最后一步做这项工作,这里有一个文章,交 付代码前的5件事值的参考。
同后台交互
JavaScript 是一门前台语言,你需要别的语言同后台交互,并返回数据,使用 AJAX,你可以让 JavaScript 直接使用同后台的交互,将复杂的数据处理交由后台处理。
JavaScript 框架
自己编写适应各种浏览器的代码是完全浪费时间,应当选择一个 JavaScript 框架,让这些复杂的事情交给框架处理。
更多资源 延伸阅读

2010年4月22日星期四

100 One-liner Jokes


  1. I asked God for a bike, but I know God doesn't work that way. So I stole a bike and asked for forgiveness. 
  2. I want to die peacefully in my sleep, like my grandfather.. Not screaming and yelling like the passengers in his car.
  3. Do not argue with an idiot. He will drag you down to his level and beat you with experience.
  4. The last thing I want to do is hurt you. But it's still on the list.
  5. If sex is a pain in the ass, then you're doing it wrong...
  6. The early bird might get the worm, but the second mouse gets the cheese.
  7. We live in a society where pizza gets to your house before the police.
  8. Having sex is like playing bridge. If you don't have a good partner, you'd better have a good hand.
  9. Some people are like Slinkies ... not really good for anything, but you can't help smiling when you see one tumble down the stairs.
  10. Politicians and diapers have one thing in common. They should both be changed regularly, and for the same reason.
  11. War does not determine who is right - only who is left.
  12. Women might be able to fake orgasms. But men can fake a whole relationship.
  13. We never really grow up, we only learn how to act in public.
  14. Men have two emotions: Hungry and Horny. If you see him without an erection, make him a sandwich.
  15. Light travels faster than sound. This is why some people appear bright until you hear them speak.
  16. My mother never saw the irony in calling me a son-of-a-bitch.
  17. I thought I wanted a career, turns out I just wanted paychecks.
  18. If you think nobody cares if you're alive, try missing a couple of payments.
  19. Sex is not the answer. Sex is the question. "Yes" is the answer.
  20. Evening news is where they begin with 'Good evening', and then proceed to tell you why it isn't.
  21. How is it one careless match can start a forest fire, but it takes a whole box to start a campfire?
  22. If 4 out of 5 people SUFFER from diarrhea... does that mean that one enjoys it?
  23. Knowledge is knowing a tomato is a fruit; Wisdom is not putting it in a fruit salad.
  24. If God is watching us, the least we can do is be entertaining.
  25. Never, under any circumstances, take a sleeping pill and a laxative on the same night.
  26. I didn't fight my way to the top of the food chain to be a vegetarian
  27. A bus station is where a bus stops. A train station is where a train stops. On my desk, I have a work station.
  28. If I agreed with you we'd both be wrong.
  29. Did you know that dolphins are so smart that within a few weeks of captivity, they can train people to stand on the very edge of the pool and throw them fish?
  30. A computer once beat me at chess, but it was no match for me at kick boxing.
  31. I saw a woman wearing a sweat shirt with "Guess" on it...so I said "Implants?"
  32. Children: You spend the first 2 years of their life teaching them to walk and talk. Then you spend the next 16 years telling them to sit down and shut-up.
  33. Why does someone believe you when you say there are four billion stars, but check when you say the paint is wet?
  34. Better to remain silent and be thought a fool, than to speak and remove all doubt.
  35. A bank is a place that will lend you money, if you can prove that you don't need it.
  36. Laugh at your problems, everybody else does.
  37. The voices in my head may not be real, but they have some good ideas!
  38. A clear conscience is usually the sign of a bad memory.
  39. Good girls are bad girls that never get caught.
  40. He who smiles in a crisis has found someone to blame.
  41. Women will never be equal to men until they can walk down the street with a bald head and a beer gut, and still think they are sexy.
  42. The shinbone is a device for finding furniture in a dark room.
  43. The main reason Santa is so jolly is because he knows where all the bad girls live.
  44. To steal ideas from one person is plagiarism. To steal from many is research.
  45. Some cause happiness wherever they go. Others whenever they go.
  46. I discovered I scream the same way whether I'm about to be devoured by a great white shark or if a piece of seaweed touches my foot.
  47. Crowded elevators smell different to midgets.
  48. I didn't say it was your fault, I said I was blaming you.
  49. Whenever I fill out an application, in the part that says "If an emergency, notify:" I put "DOCTOR". What's my mother going to do?
  50. God must love stupid people. He made SO many.
  51. Behind every successful man is his woman. Behind the fall of a successful man is usually another woman.
  52. I always take life with a grain of salt, ...plus a slice of lemon, ...and a shot of tequila.
  53. The sole purpose of a child's middle name, is so he can tell when he's really in trouble.
  54. It's not the fall that kills you; it's the sudden stop at the end.
  55. Artificial intelligence is no match for natural stupidity.
  56. Never hit a man with glasses. Hit him with a baseball bat.
  57. There's a fine line between cuddling and holding someone down so they can't get away.
  58. A bargain is something you don't need at a price you can't resist.
  59. Never get into fights with ugly people, they have nothing to lose.
  60. My opinions may have changed, but not the fact that I am right.
  61. My psychiatrist told me I was crazy and I said I want a second opinion. He said okay, you're ugly too.
  62. A little boy asked his father, "Daddy, how much does it cost to get married?" Father replied, "I don't know son, I'm still paying."
  63. Some people say "If you can't beat them, join them". I say "If you can't beat them, beat them", because they will be expecting you to join them, so you will have the element of surprise.
  64. When in doubt, mumble.
  65. I intend to live forever. So far, so good.
  66. Hospitality: making your guests feel like they're at home, even if you wish they were.
  67. If at first you don't succeed, skydiving is not for you!
  68. A TV can insult your intelligence, but nothing rubs it in like a computer.
  69. Knowledge is power, and power corrupts. So study hard and be evil.
  70. Money can't buy happiness, but it sure makes misery easier to live with.
  71. Always borrow money from a pessimist. He won't expect it back.
  72. Worrying works! 90% of the things I worry about never happen.
  73. Virginity is like a soapbubble, one prick and it is gone.
  74. Nostalgia isn't what it used to be.
  75. With sufficient thrust, pigs fly just fine. 
  76. I should've known it wasn't going to work out between my ex-wife and me. After all, I'm a Libra and she's a bitch.
  77. Hallmark Card: "I'm so miserable without you, it's almost like you're still here."
  78. You're never too old to learn something stupid. 
  79. A diplomat is someone who can tell you to go to hell in such a way that you will look forward to the trip.
  80. I got in a fight one time with a really big guy, and he said, "I'm going to mop the floor with your face." I said, "You'll be sorry." He said, "Oh, yeah? Why?" I said, "Well, you won't be able to get into the corners very well."
  81. Some people hear voices.. Some see invisible people.. Others have no imagination whatsoever. 
  82. I like work. It fascinates me. I sit and look at it for hours. 
  83. We have enough gun control. What we need is idiot control. 
  84. Women may not hit harder, but they hit lower. 
  85. Just remember...if the world didn't suck, we'd all fall off. 
  86. Jesus loves you, but everyone else thinks you're an asshole. 
  87. I used to be indecisive. Now I'm not sure. 
  88. I don't trust anything that bleeds for five days and doesn't die. 
  89. If you keep your feet firmly on the ground, you'll have trouble putting on your pants. 
  90. To be sure of hitting the target, shoot first and call whatever you hit the target. 
  91. You are such a good friend that if we were on a sinking ship together and there was only one life jacket... I'd miss you heaps and think of you often. 
  92. Going to church doesn't make you a Christian any more than standing in a garage makes you a car. 
  93. Change is inevitable, except from a vending machine. 
  94. If you are supposed to learn from your mistakes, why do some people have more than one child. 
  95. A bus is a vehicle that runs twice as fast when you are after it as when you are in it. 
  96. Whoever coined the phrase "Quiet as a mouse" has never stepped on one. 
  97. You do not need a parachute to skydive. You only need a parachute to skydive twice.
  98. The difference between an oral thermometer and a rectal thermometer is in the taste.
  99. When tempted to fight fire with fire, remember that the Fire Department usually uses water.
  100. Remember, if you smoke after sex you're doing it too fast.