直播中
在當今的開發(fā)環(huán)境之下,快即是好。
當今諸如“快速應(yīng)用開發(fā) ”,“敏捷軟件開發(fā) ”以及“異步&#106avascript和XML “(如今我們甚至無法耐心地等待網(wǎng)頁的重新載入)等流行詞匯和術(shù)語讓你見識到究竟身處于怎樣一個快節(jié)奏的世界當中。
但是做事趕時間并不意味著你工作要加班加點——你工作時需要動些腦筋。此文,將為你提供縮短網(wǎng)頁應(yīng)用開發(fā)的十大省時技巧。
一、使用框架
框架提取出了常規(guī)代碼,給你編寫網(wǎng)頁應(yīng)用提供了一個基本的構(gòu)造和基礎(chǔ)。
框架中一個非常典型的例子就是Rails,Rails就是Ruby編程語言的一個網(wǎng)頁應(yīng)用開發(fā)框架。通過為你提供預先編寫好的代碼程序包(舉個例子,像用戶輸入驗證方式)——你不僅僅節(jié)省了用Ruby編寫你自己代碼的時間——你也很清楚這些程序包已經(jīng)受住了其他開發(fā)人員的測試以及檢驗,這可以在廣度測試時為你減少不少麻煩,另外還可以避免一些因缺少測試而導致潛在的漏洞。
同樣的好處對于使用諸如MooTools的&#106avascript框架也是適用的。這些框架提供給你的一些類方法都是由核心開發(fā)者和社區(qū)提供,并在諸多瀏覽器下經(jīng)受廣泛測試的考驗。客戶端腳本語言框架還有jQuery,Prototype JS,以及YUI。如果你想用一些非主流的JS框架,你可以看看這個極具潛力的&#106avascript框架 清單。
對于服務(wù)器端的框架,你可以考慮CakePHP ,CodeIgniter ,Zend ,或者symphony。如果你喜歡VB以及C#之類微軟支持的語言,你可以考慮.Net框架 。
你甚至是可以使用像960Grid 或者BluePrint這樣的CSS框架來快速編寫和規(guī)范你自己風格的頁面結(jié)構(gòu)。
二、使用集成開發(fā)環(huán)境
當然,你可以只用一個Notepad這樣的文本編輯器和FTP就可創(chuàng)建網(wǎng)頁應(yīng)用及其頁面。但是我想大多數(shù)人都認為,這并不是一個可用在開發(fā)復雜和健壯網(wǎng)站項目之上的明智方法。
集成開發(fā)環(huán)境 (IDE),為你準備了創(chuàng)建和管理大型網(wǎng)站項目所需要的工具集合。集成開發(fā)環(huán)境的功能一直在變,但它們都有如下一些常見的功能
項目管理以及團隊協(xié)作功能。
調(diào)試以及診斷功能。
語法提示以及自動完成功能(IDE會猜測你想寫的語法)
語法高亮
內(nèi)置FTP,能同步本地和遠程主機上的文件
“IDE”這個詞可能有些花哨,有些人還對此不太熟悉,但是大數(shù)據(jù)人應(yīng)該聽說過Adobe的Dreamweaver。Dreameweaver就可以看成是一個集成開發(fā)環(huán)境。因為它含有上面提到的一些功能,幫你更快的編寫代碼。(他通常適用于前端的制作。但是它也支持服務(wù)器端的語言,像PHP和ASP.NET)
如今網(wǎng)上有大量的IDE,你所要做的就是為你自己(或者你的團隊)挑選一個。像一些流行的,功能齊全的IDE,如Eclipse, Komodo IDE, NetBeans, Visual Studio, 以及Aptana Studio.
如果,你看到這里后,依然決心要使用一個文本編輯器,你至少應(yīng)該看看為代碼工作者準備的文本編輯器集錦 這篇文章。
三、適當?shù)哪K化
模塊化是創(chuàng)建易于維護和擴展復雜應(yīng)用的關(guān)鍵之所在。本質(zhì)上這意味著代碼要以小的部件來編寫,而不是將所有代碼寫成一個大文件。
模塊化開頭有其自身的時間成本(因為你必須在設(shè)計文件結(jié)構(gòu)方面花費不少心思。)但是,當你需要變更某一部件或者想要擴展你的應(yīng)用時,這會為你節(jié)省掉不少時間。
模塊化也使得bug限制在模塊之內(nèi),如果有地方發(fā)生問題,你會很快的找到問題所在。
但是模塊化的濫用會導致代碼的臃腫和太多不必要的include語句,這會極大的拖慢整個應(yīng)用的運行速度。因此在模塊化程度過高和過低之間,我們需要到一個好的平衡點。
一些模塊化設(shè)計模式就包含MVC 和PAC模式。
四、使用瀏覽器工具高效排除前端疑難問題
沒有處理比跨瀏覽器的兼容和解析問題更糟糕的事情了。這桿子事會使你瘋掉,它給你帶來的挫敗感差不多讓你覺得不砸掉點東西難解心頭之恨。但是集成進瀏覽器的調(diào)試工具會使得尋找和診斷前端問題變得分為迅速和高效。
Firebug 和Web Developer 是絕對必要的省時利器,它們已經(jīng)成了前端網(wǎng)頁開發(fā)者的必備工具。Firbug可以輕松的查看DOM,以了解其原理,以及可以在運行中調(diào)整CSS/HTML/JS, 除此之外,也可以幫你調(diào)試和注釋(profile)你的JavaScrpt代碼,幫你弄起初究竟是什么狀況導致了你的腳本運行中斷。Web Developer給你提供了一系列有用的工具,像有的工具可以讓你點擊一個頁面元素就可以看到有哪些樣式聲明影響了該元素,也可以使你很方便的禁用 &#106avascript和CSS,讓你了解在沒有&#106avascript或者CSS的情況下, 你的頁面是如何工作的。
如果你需要在IE瀏覽器下調(diào)試,你可以嘗試嘗試IE開發(fā)者工具條 。它在功能上跟Firebug和Web Developer很相似。如果你想找更多的集成在瀏覽器內(nèi)的IE調(diào)試工具來幫你i節(jié)省調(diào)試時間,你可以點擊這個鏈接。
五、代碼重用
如果你發(fā)現(xiàn)你自己老是在做重復的事情,這時候你應(yīng)該反思反思你的代碼結(jié)構(gòu)了??紤]學習一下常見的設(shè)計模式它會幫助你創(chuàng)建可重用的靈活的方法,函數(shù),以及對象。
打個比方,如果,你需要頻繁的鏈接到數(shù)據(jù)庫,你可能需要創(chuàng)建一個數(shù)據(jù)庫的訪問類,來處理數(shù)據(jù)庫的鏈接,查詢以及數(shù)據(jù)的提交。
六、 在線協(xié)作以及追蹤項目狀態(tài)
實際上——你工作并不孤單。無論你是為一個開發(fā)團隊工作或是為某人工作(這個人可能是你上司或者你的客戶),你都應(yīng)該充分享受在線協(xié)作和追蹤項目狀態(tài)說給你帶來的好處。
你在行政性任務(wù)上花費的時間越少,或者在在無窮無盡的會議上花費的時間越少(或者,更糟的,是那種需要出差的面對面會議)——你在代碼上花費的時間就越多。
像Basecamp, Lighthouse, 和activeCollab 這類工具就給你提供了一站式團隊協(xié)作服務(wù),讓你隨時追蹤項目的狀態(tài),你也可以設(shè)置項目的目標和里程碑(milestones)——這樣所有人就可以自動同步,為你省下頻繁回復電子郵件的時間,你也無需在進度確認會議上花費大量無用時間。
這些工具l另外會幫助你區(qū)分事情輕重,確保了所有的事情都在一個集中的地方組織和記錄下來。
七、代碼的自動格式化和標準化
你需要將你的所有代碼格式標準化,這樣做不僅僅這是一個很好的習慣,而且日后你一旦需要回來看這些代碼,這會幫你很快的理解這些代碼。
代碼的自動格式化可以讓你一鍵格式化你所有的代碼,而不是一行一行來做這事,這也確保了代碼編寫的一致性。自動的格式化也減少了手動修改產(chǎn)生錯誤的風險、
我們有許多工具來幫助我們做這事,很多是網(wǎng)絡(luò)版的工具 。對于CSS而言,一個流行的開源解決方案就是CSSTidy (Clean CSS is an CSSTidy的在線版本)。對于HTML我們有HTML Tidy。
對于腳本,我們有PHP Source Code Formatter, Ruby Script Beautifier, 和Code Beautifier Plus (這個工具是用來格式化 C#, ActionScript, and Java).
八、在需求收集和規(guī)劃階段多花時間
預防遠勝過補救?;蛟S某些思想學派的人物強調(diào)不要在計劃上浪費時間——確保你已經(jīng)收集到了你需要知道的所有信息,在做功課方面花費必要時間依然是必要的。如果在需求收集方面沒做足功課會導致功能泛濫(feature Creep) ,原因就是各種未曾預料到的功能需求
九、使用已經(jīng)編寫好的代碼
古人以及幫我們發(fā)明了車轱轆,所以我們也沒必要親自再搗鼓出車轱轆來。如果在某個地方看到某個感興趣的功能,其他人極有可能已經(jīng)為你寫好了代碼(嗯,不僅僅是為你,而是為我們大家。)對于PHP而言, PHP Classes Repository為你提供了大批的類和腳本供你下載和使用。Hot Scripts則提供了其他語言的各種腳本。如果你只是想要一些小的代碼段,你可以去devSnippets 上面淘淘寶。
注意:只有當你具備充足的經(jīng)驗,能分辨出好代碼和差代碼,上面的這個辦法才會真正幫你大忙。否則你會發(fā)現(xiàn)你最終成品中代碼bug叢生,書寫混亂。
十、精簡功能
你必須對網(wǎng)頁應(yīng)用的某些功能做一個評估,以判斷在這個功能上面的時間投入是否值得。
你的用戶真的需要一個并不經(jīng)常更新的內(nèi)容管理系統(tǒng)為每一個類別的文章提供一個自定義的RSS輸出嗎?你真的需要一個網(wǎng)站樣式轉(zhuǎn)換器來幫你檢測到用戶地理位置哪里,然后將網(wǎng)站呈現(xiàn)不同的風格。
編寫網(wǎng)站功能就是一場艱苦的戰(zhàn)斗 ,不要在對終端用戶無用的功能上耗費開發(fā)時間,況且這些功能而且會使用戶界面復雜化。