程序設(shè)計是困難的,其核心是管理的復(fù)雜性。計算機程序是人類做出的最復(fù)雜的東西。質(zhì)量是不可靠的且隱蔽的。
好的體系架構(gòu)是必需給程序足夠的結(jié)構(gòu)使其健壯而不會陷入混亂的泥淖,但我們表達一個程序細節(jié)的方式是同等重要的。一個程序的本質(zhì)會被不良的編碼所隱藏。只有當(dāng)一個程序的表達清晰時,我們才能有希望正確的推理出它的效率、安全和正確性。
William Strunk的《風(fēng)格要素》(The Elements of Style)是關(guān)于文學(xué)風(fēng)格的經(jīng)典著作,它是一本關(guān)于英文寫作的薄手冊,在用法、組織和形式上提出忠告。風(fēng)格的理念應(yīng)用于編程,在1972年Kreitzberg和Shneiderman的《FORTRAN風(fēng)格要素》(The Elements of FORTRAN Style)中是不成功的,但在1978年的Kernighan和Plauger的《編程風(fēng)格要素》(The Elements of Programming Style)中是非常成功的:
好的編程不能通過籠統(tǒng)的說教。學(xué)習(xí)編程的好方法是一次又一次的思考:真正的編程是如何通過一些良好實踐的原則和一點常識來進行改進的。
他們從他們批評和改進的其他的編程教科書中篩選程序。
當(dāng)我們在這里談?wù)擄L(fēng)格時,我們談?wù)摰牟皇浅绷骰蛘邥r尚,也不是CSS、布局慣例或排版。我們正在談?wù)摰氖悄苷嬲岣叽a價值的表達式的永恒品質(zhì)。對于公司來說,他們的評估和他們的代碼是息息相關(guān)的,風(fēng)格應(yīng)該是一個至關(guān)重要的受關(guān)注內(nèi)容。
我們使用許多編程語言,但在某一方面,Javascript是最重要的,它是瀏覽器的語言。當(dāng)人們訪問我們的站點時,他們將邀請我們的Javascript程序在他們的機器中執(zhí)行。我們有義務(wù)使那些程序執(zhí)行好。
沒有好的關(guān)于Javascript編程的課本。在網(wǎng)頁使用Javascript的大多數(shù)人學(xué)習(xí)它是通過從糟糕的書、糟糕的站點和糟糕的工具中復(fù)制相當(dāng)糟糕的例子。我們這里有極好的Javascript程序員社區(qū),但我們依舊能從較好的風(fēng)格實踐中獲益。
為了證明這個問題,我將從公共網(wǎng)站中抽取一些程序,展示它們?nèi)绾文鼙桓倪M。這并不是我有意為難任何人。我的意圖僅是通過例子展示風(fēng)格的價值。我不會保留任何秘密:我展示給你的是我們已經(jīng)傳送給世界上的每一個人。
淘汰過時結(jié)構(gòu)
下面的例子是2005-09-19摘自www.yahoo.com:
<script language=javascript><!-- lck='', sss=1127143538, ylp='p.gif?t=1127143538&_ylp=A0Je5ipy2C5D54AAwVX1cSkA', _lcs=''; --></script>
這個腳本塊用了language屬性。這個特性是微軟為了支持VBScript引入的。然而Netscape采用它是為了支持非標(biāo)準(zhǔn)偏差。W3C不采取這個language屬性,傾向使用MIME類型的type屬性取代。不幸的是,MIME類型未得到標(biāo)準(zhǔn)化,所以它有時是”text/javascript”、”application/ecmascript”或其他。幸運的是所有的瀏覽器都選擇Javascript作為默認(rèn)的編程語言,所以簡單的寫<script>是最好的。它最小,且工作在最多的瀏覽器。在腳本中使用HTML的注釋的時間要回溯到Netscape Navigator和Netscape Navigator 2的兼容問題上來。后者引入了<script>標(biāo)簽。然而,前者的用戶能像文本一樣看到腳本,因為在HTML慣例中不能識別的標(biāo)簽被忽略。<!–注釋hack在Netscape Navigator 3出現(xiàn)的時候是需要的,現(xiàn)在它不被需要了。它是丑陋的且浪費空間的。
逗號運算符像Javascript語法的大多數(shù)一樣從C語言中借用。逗號運算符獲得兩個值,且返回第二個。在語言的定義中它的存在易于掩蓋一定的編碼錯誤,編譯器也易于對一些錯誤視而不見。最好避免逗號運算符,并以分號運算符代替。
在這個案例里,我們定義了一些全局變量。當(dāng)指定一個未知(匿名)的變量時,Javascript會創(chuàng)建一個新的全局變量來替代產(chǎn)生的錯誤。事后看來,這是一個錯誤。即使當(dāng)他們是一個標(biāo)準(zhǔn)錯誤,這是避免錯誤的最好辦法。我們應(yīng)該明確的聲明變量。它花費我們四個字符,但是它正是要做的正確的事。
<script> var lck = '3ek6b0i2he2a5eh3/o', sss = 1126894256, ylp = 'p.gif?t=1126894256&_ylp=A0Je5iOwCitDw2YBX331cSkA', _lcs = '94040'; </script>
從上面我們能得出這樣的原則:淘汰過時結(jié)構(gòu)
出處:隨網(wǎng)之舞
責(zé)任編輯:bluehearts
上一頁 下一頁 Javascript風(fēng)格要素 [2]
◎進入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|