Web開發人員常犯的10個錯誤

2015-09-21    分類:程式設計師人生、首頁精華1人評論發表於2015-09-21

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

說到開發一個執行在現代網路中的網站:Web開發人員需要選擇虛擬主機平臺和底層資料儲存,準備編寫HTML、CSS和JavaScript用的工具,要有設計執行方式,以及一些可用的JavaScript庫/框架。在將任務分解為這幾步之後,接下來要做的就簡單多了,可以去網上找文章,瀏覽論壇,看看那些能提供更好的Web體驗提示的示例。

然而不管是走哪條路,犯錯卻是每一個開發人員都不可避免的。雖然有些錯誤與某一個具體的行為相關,但有些錯誤卻是所有Web開發人員都需要面對的挑戰。因此,通過研究,體驗和觀察,我總結了Web開發人員常犯的10個錯誤——以及如何避免這些錯誤。

以下要點沒有特定的順序。

1)寫一些過時的HTML

錯誤:早期的網際網路比起我們現在,標記的選擇要少得多。然而,舊習難改,現在很多開發人員寫的HTML就好像還身處20世紀一樣。舉例來說,我們使用<table>元素用於佈局,當其他特定語義標籤更適合的時候使用<span>或<div>元素,在當前HTML標準不受支援的時候使用<center><font>標籤,在頁面上間隔專案,如果有大量&nbsp;字元實體的話。

影響:遵從這種過時的HTML規則可能會導致標記過於複雜,結果是在不同的瀏覽器中發生不同的行為。而且沒有了改進瀏覽器的動力,因為沒有必要更新到最新的瀏覽器,如Microsoft Edge,哪怕是Internet Explorer版本(11、10、9)也變得沒有必要。

如何避免:停止使用<table>元素用於內容佈局,限制使用<table>元素來顯示錶格資料。例如可以去whatwg.org瞭解當前可用的標記選項。使用HTML去描述內容是什麼,而不是說明內容如何展現。對於如何顯示內容,請使用CSS(http://www.w3.org/Style/CSS/<wbr><wbr>)。

2)“明明在我的瀏覽器中是可行的……”

錯誤:開發人員往往會偏愛某一個特定的瀏覽器,或者特別討厭某一個,可能主要是因為對測試網頁檢視有所偏見。也有可能是因為從網上找到的程式碼示例不能保證會如何呈現在其他瀏覽器中。此外,一些瀏覽器對風格有不同的預設值。

影響:以某一個瀏覽器為中心寫的網站,在其他瀏覽器中顯示時,其質量將會很差。

如何避免:在開發過程中,在所有瀏覽器和版本中測試網頁是不切實際的。不過,每隔一段時間,在多個瀏覽器中檢查網站的樣子不失為一個好方法。現在,不管你偏好的是什麼平臺,總有免費的工具可用:免費的虛擬機器、網站掃描器。如http://browsershots.org/https://www.browserstack.com/show網站可以給出頁面如何呈現在多個瀏覽器/版本/平臺中的快照。Visual Studio等工具還可以呼叫多個瀏覽器,來顯示你正在工作的單一頁面。當涉及到CSS設計時,可以參考在meyerweb.com中所示的那樣“重置”所有的預設值。<wbr><wbr><wbr><wbr>

如果你的網站正在使用的CSS特性是專為某一瀏覽器特製的,那麼注意它的引擎字首,如-webkit--moz--ms-。對於行業在這方面的發展趨勢指導,那麼可以閱讀以下參考:

上面這些參考資料解說了引擎字首的革新,以及你還可以點選這裡——這個網站提供了一些如何摒棄引擎字首的實用建議。

3)不好的格式

錯誤:提示使用者提供資訊(特別是在輸入文字欄位的時候),並假設資料會如預期接收。

影響:很多事情會(或者很有可能將會)出錯,當我們信任使用者輸入的時候。如果無法提供所需的資料,或接收到的資料不能與下面的資料模式相容,頁面可能會失敗。更為嚴重的是,有的使用者可能會故意違背網站的資料庫,例如可以通過注入式攻擊(見OWASP:Top 10 2013-A1-Injections)。

如何避免:你首先要做的事是確保使用者清楚你需要什麼型別的資料。比如說,如果你只說要地址,那使用者不知道指的是單位,家庭還是電子郵件的地址!除了要具體,還要充分利用現在的HTML提供的資料驗證技術。不管資料在瀏覽器端是如何驗證的,確保它始終也在伺服器端驗證。不要讓一個串接的T-SQL語句使用來自於使用者輸入的,各個欄位的型別沒有經過確認的資料。

4)臃腫的響應結果

錯誤:頁面充滿了許多高品質的圖形和/或圖片,這些圖形和/或圖片藉助img元素的高度和寬度屬性按比例縮小。來自於頁面連結的檔案,如CSS和JavaScript,很大。源HTML標記也可能是不必要的複雜和全面。

影響:完全渲染頁面的時間是如此之久,以致於一些使用者放棄了,或者甚至於直接不耐煩地重新請求整個頁面。在某些情況下,如果頁面處理等待太久,會出現錯誤。

如何避免:不要抱有現在網際網路接入越來越快的僥倖心態——從而允許臃腫的場景。相反,要將從瀏覽器到你的網站的來回當為一種成本。影像是網頁臃腫的主要罪犯。為了最大限度地減少影像成本,減輕頁面載入的壓力,可以試試以下三個技巧:

  1. 問問你自己:“這些圖形真的有必要嗎?”刪除不需要的圖片。
  2. 使用例如Shrink O’Matic或RIOT的工具來減少影像檔案大小。
  3. 預載入影像。這不會提高初始下載的成本,但可以讓網站其他頁面影像載入速度更快。

另一種減少成本的方式是壓縮CSS和JavaScript連結檔案。有很多的工具,如Minify CSSMinify JS都能幫你做到。

5)建立所謂“應該能行”的程式碼

錯誤:無論是JavaScript,還是在伺服器上執行的程式碼,開發人員都需要測試並確認它是否可以正常工作,而不是在部署了之後,就認為它應該就能從一而終地執行。

影響:不經過適當錯誤檢查的網站就是對終端使用者耍流氓。不僅會極大地影響使用者體驗,而且其錯誤訊息內容的型別可能會給黑客線索來滲透這個站點。

如何避免:是人都會犯錯,這個哲理同樣適用於編碼。使用JavaScript,一定要實施好的技術來防止並抓住錯誤。雖然這篇文章描繪了用JavaScript編碼Windows應用程式,但是大部分的內容也適用於web開發,許多提示都很不錯!另一種能讓程式碼變得可靠又能在未來變化中存活下來的方法是單元測試。

如果我們夠仔細,那麼就能捕捉到伺服器端的程式碼失敗,而不被使用者發現。只顯示必要的資訊,並且一定要確保設定友好的錯誤頁面,如HTTP 404s。

6)寫分叉程式碼

錯誤:本著支援所有瀏覽器和版本的崇高理念,開發人員立志建立可對任意可能情況作出回應的程式碼。程式碼中if語句成堆,所有方向都有分叉。

影響:隨著瀏覽器新版本的更新,程式碼檔案會變得越來越笨拙和難以管理。

如何避免:實現程式碼的功能檢測和瀏覽器/版本檢測。功能檢測技術不僅可以顯著減少程式碼量,還更易於閱讀和管理。不妨考慮使用如Modernizr這樣的庫,不僅有助於功能檢測,還能自動幫助提供不能跟上HTML5和CSS3速度的舊版瀏覽器的反饋支援。

7)非響應式設計

錯誤:假設開發/設計人員在相同尺寸的顯示器上開發網站。

影響:當在移動裝置或在非常大的螢幕檢視網站時,使用者體驗要麼很難看到頁面的重要方面,要麼甚至要時刻注意著不導航至其他網頁。

如何避免:響應式的思維方式。在網站中使用響應式設計。這裡有一些關於這方面的實用教程,包括響應式圖片,還有一個非常受歡迎的庫,那就是Bootstrap

8)製作無意義的頁面

錯誤:製作面向公眾內容的網頁才是有用的,絕不能不提供關於搜尋引擎的任何線索。沒有實現可訪問性功能。

影響:如果不能讓搜尋引擎發現網頁,那麼,可能會只有少量或根本沒有訪問。

如何避免:使用SEO(搜尋引擎優化)和HTML的支援可訪問性。關於SEO,一定要新增標籤以提供有意義的網頁關鍵字和描述。 About Tech就寫得很好,可以借鑑。為了能有更好的可訪問性功能體驗,請對每一個img和area標籤提供一個alt="your image description" 屬性。更多建議請見About Tech。你也可以在Cynthia Says測試公共網頁,看它是否相容Section 508。

9)網站過多重新整理

錯誤:建立的網站需要為每一個互動而全面重新整理頁面。

影響:類似於頁面臃腫(參見#4),頁面載入時間的效能會受到影響。使用者體驗缺乏流暢性,並且每次互動都可能導致網頁短暫(或長時間)的復位。

如何避免:快速避免這種情況的一個方法就是,通過測定回發到伺服器的內容是否是真正需要的。例如,當不依賴伺服器端資源的時候,客戶端指令碼可用於提供直接結果。你也可以應用AJAX技術或進一步使用單頁的應用程式“SPA”方法。流行的JavaScript庫/框架,如JQuery、KnockoutJS和AngularJS,能讓這些方法的採用變得容易得多。

10)做了太多的無用功

錯誤:開發人員花了很長的時間來建立web內容。大量的時間花在了重複的任務上,或者自己敲程式碼寫了很多。

影響:初始網站的釋出和後續的更新時間過於冗長。如果其他開發人員也在在做同樣的工作,卻用了更少的時間和精力,那麼你的開發價值顯然就低了。手動勞動很容易出現錯誤,而排除故障錯誤需要更多的時間。

如何避免:探索你的選擇。在開發的每一個階段考慮使用新的工具和新的流程技術。例如,你目前使用的程式碼編輯器相比Sublime TextVisual Studio,如何?不管你使用的是什麼樣的程式碼編輯器,你最近有好好鑽研它的功能嗎?也許只投入稍稍一點時間去仔細閱讀文件,就可以發現做事的新方法,為今後節省一個又一個小時的時間。例如,在這篇文章中,擴充套件Visual Studio可以為web開發人員提高生產效率。

不要錯過網上可用的幫助工具!例如,檢查在dev.modern.ie上的工具以簡化測試(跨多個平臺和裝置)以及排除故障。

你也可以通過實現流程自動化以減少時間和錯誤。這方面的例子是使用Grunt工具,例如它的自動化功能可以減小檔案(見第4點)。另一個例子是Bower,可以協助管理庫/框架(參見第9點)。

至於web伺服器本身?在例如Microsoft Azure Web Apps的幫助下,你可以快速建立一個網站,幾乎所有的開發場景都可以很輕輕鬆鬆地規模化到你的業務中!

總結

通過識別這些常見的錯誤,web開發人員可以避免很多讓其他人飽受煎熬的挫折。我們不僅需要承認錯誤,還應該清楚錯誤的影響,並採取措施避免錯誤,這樣才能有更好的開發表現——並有信心完成任務!

譯文連結:http://www.codeceo.com/article/10-mistakes-web-developer-make.html
英文原文:10 Common Mistakes Web Developers Make
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章