Web开发者不可不知的15条编码原则

justjavac 发表于 2012-05-25

HTML已经走过了近20的发展历程。 从HTML4到XHTML,再到最近十分火热的HTML5,它几乎见证了整个互联网的发展。 但是,即便到现在,有很多基础的概念和原则依然需要开发者高度注意。

下面,向大家介绍这些应该遵循的开发原则。

1、善用DIV来布局

当开发一个Web页面时,要考虑第一件事就是区分页面重点。 将这些内容用DIV标签包含起来,页面的代码会呈现出整洁、缩进良好的风格。

<div id="header"></div> <div id="body-container"> <div id="content"> <!-- Content -- > </div> <div id="right-side-bar"> <!-- Right Side Bar Content Area -- ></div> </div> <div id="footer"></div>

2、将HTML标签和CSS样式表分割开来

好的页面应该将HTML标签和CSS样式表分割开来。 这是每一个Web开发者在首次接触Web开发时就应该知道的一条原则。 然而,直到今天,仍然有很多开发者没有严格遵循这一原则。

不要在HTML标签里内嵌样式表代码。 开发者应该养成习惯,单独建立文件,用以存放CSS样式表。 而这也将方便其他开发者在修改你的代码时,能迅速完成工作。

...

javascript不可用的问题探究

justjavac 发表于 2012-05-24

昨天在Twitter上的一些有趣的讨论中,我发现人们对于Web应用和站点对javascript的依赖普遍存在一种疑惑。 这种疑惑一直都存在,而对我而言,这个问题随着浏览技术的飞跃发展而集中爆发了。

我第一次遇到这个问题还是在DHTML盛行的时代。 我们对浏览器无所不用其极,加上各种动画菜单、3D标签(我们现在已经学会不再使用这些了),但总有人告诉我们javascript不可用。

谁禁用了javascript

第一个要问的问题是这些javascript不可用的环境在哪里。下面是一些可能的答案:

  • 安全系统比如noscript或者公司代理过滤掉了javascript;
  • 功能手机比如旧式黑莓(我还记得将旧式黑莓换到Opera Mini以获得总算还过得去的上网体验); * 在移动应用环境中,图片和脚本有时候会被拆分处理; * 在流量有限或者接入很慢的区域中;
  • 人们因为个人原因禁用了javascript; * 讨厌广告弹出等强势广告的人.

就像你所看到的那样,javascript被禁用的原因多种多样,有被动的,也有主动的。 所以不能说只有乱用网络的人才会遭遇这样的问题。

为什么javascript会被禁用

像上面所列举的那样,javascript被禁用的原因多种多样。 如果它是被有意禁用的,那么我猜主要原因无非以下三点,即安全考虑、广告疲劳以及慢速连接。

安全考虑在情理之中。 几乎每一个在客户端的攻击都是使用的javascript(大多数情形下都是利用了插件的漏洞)。 Java当然是当前最大的安全漏洞,但是通过javascript同样会对存在漏洞的网站或者不经保护或者过时的浏览器以及操作系统造成安全威胁。

慢速连接是个很有意思的原因。 非常讽刺的是,我们使用javascript是为了加速客户端体验。 最初使用js的一个例子就是在客户端对表单进行验证从而避免服务器端不必要的工作周期。

如果你现在正处于一个很差的连接中(比如一个无线连接或者很差的3G连接),你想要使用Google Reader或者Gmail, 你只能得到一个不完整的页面,这时候只有使用低版本的才能更好工作。

为了两方都好

基于环境以及连接给用户最好的体验是非常好的。 这也是渐进增强(progressive...

程序员成熟的标志

justjavac 发表于 2012-05-24

程序员在经历了若干年编程工作之后,很想知道自己水平到底如何?

自己是否已经成为成熟的程序员?

虽然程序员会对自己有一个自我评价,但是,自己的评价和社会 的评价、专业的评价会有差异,所以程序员自己并不能肯定这个评价。 现实中,除了各种证书之外,很少有人会专门给出一个程序员的成熟度的评价。 人们往往是偶 发性地就事论事地对程序员的工作作出好与不好,行与不行的评论。 因此,程序员对此感到很茫然,不知道要从那些方面去评价自己的能力。

一个程序员到底成熟不成熟,我想从以下几个方面谈谈自己的看法。

1 、技术标志

如果程序员不会编程序那决不是程序员,程序员至少要掌握一门程序设计语言,要能够用这种语言去编写程序去解决他想解决的问题。 但是,成熟的程序员往往掌握不止一种程序语言,三到四种语言的掌握是必须的,一种二种语言的精通也是必须的。

除了从掌握程序设计语言个数之外,我们还可以从其他几个方面去看看程序员在技术上水平。 例如,函数编写能力(命名、格式、大小、分类、参数、复用等),面向 过程的能力,面向对象的能力,数据库技术能力,效率处理能力, 安全处理能力,网络处理能力,软件构架能力,人机交互能力,通用软件能力,软件文档能力等等。 尤其是面向对象技术的掌握和运用,以及面向服务的技术都是成熟程序员所必需掌握的。

2 、时间标志

虽然程序员的天资、素质、基础知识各不相同,所经历的工作内容以及环境也不相同,但是,时间也是程序员成熟程度的标志之一。 一般程序员需要经过三到五年的时 间才能日趋成熟。其中入门需要一年,成长需要两年。

这是我经过长期观察得到平均数据。 我并不认为成熟时间越短程序员就越聪明,就越了不起。 享受每个阶段充 分的时间,会让自己成长更加充实、更加成熟。 当然,也有超期而不成熟的情况,这也是很正常的。

3 、项目标志

程序员的社会性是程序员成熟的标志之一。

没有参加过项目的程序员,程序编得再好,只能是纯程序类的程序员,是一个孤独的高手,是一种个人型的程序员,远没有成熟。 项目作为社会性活动,体现了项目的社会价值。 所以项目能力也是程序员成熟的重要标志之一:项目能力包括参加项目的个数、项目的大小、在项目中承担的角色等等。 就项目承担的角色而言,主持开发(项目经理) 3 个以上项目是必须的,这是一个必要条件。...

一条很有价值的编程建议

justjavac 发表于 2012-05-24

多年以前(早在1992年),我加入了这个疯狂的skunkworks项目,这个项目使用的是他们叫做Smalltalk的另类程序语言。 当时, “面向对象”作为一个“热门”项目才刚刚起步。作为“面向对象”的顾问,报酬非常可观。 很多人自以为这就是新的对象派别的全部内容。 这发生在Alan Kay(Smalltalk语言的发明人之一,也是面向对象编程思想的创始人之一)发表他的图灵奖获奖感言

“我发明了‘面向对象编程’这个术语, 但Java和C++跟我所知道的有所不同”(”I invented the term ‘Object Oriented Programming’ and this {Java and C++} is not what I had in mind.”)——5年前。

在加入skunkworks这个奇特的小组,使用这种奇怪的编程语言的一段时间内,我对实例变量、类变量、类实例变量之间的差别依然感到困惑。 于是我参加了来自ParcPlace的Russ Pencin的培训课程。他说了一些当时我并不能完全体味的东西。 尽管不明白金玉良言当中的要点,但我还是努力去遵守它们。 有些东西需要多年的经验才能渐渐体会其中的价值。Russ的建议是:

不要使用‘er’结尾的对象命名。(Don’t make objects that end with...

java API 设计准则

justjavac 发表于 2012-05-24

在java API设计中有着许多的各种规则「只要一个返回语句」、「关于返回 Null 值的问题」 与折衷考量,和其他所有复杂任务一样,它考验着我们的记忆力及脑力. 这里我找到了一个对正在设计java API的软件开发人员而言非常不错的准则列表,其中介绍的一些准则可能是很明显的,又或者不那么显眼,但确实非常不错,希望你会喜欢.

这里摘录了一些:

  • 优先将API与其实现置于不同的包中.
  • 优先将API放入高层包中,实现则可放在低层包.
  • 考虑将大型API拆分成若干包.
  • 考虑将API与其实现包归置到不同的java文档中.
  • 避免对API中实现类的内部依赖.
  • 避免出现不必要的API碎裂(fragmentation)情况.
  • 不要将公共实现类放在API包中. * 不要在调用及实现类间创建依赖.
  • 不要将不相关的API放在不同的包中.
  • 不要将API与SPI(Service Provider Interface,服务提供者接口)放在同一个包中.
  • 不要移动及重命名已发布的公共API包.

完整的准则列表点击这里查看.