寫代碼的方法與思考


寫代碼的方法與思考

我們看各種各樣的書籍,有講原理的,也有講實例的,你會發現里面講的邏輯非常清晰,有時候你可能會困惑,他們怎么會想到用這個方法呢。其實這就是一個人的思考過程了。

(1)如何制作一個單擊鼠標菜單隱現的特效

首先在准備制作一個特效前,你腦子里就得思考整個特效的全過程(工作過程:鼠標點擊某個菜單,這個菜單如果是顯現狀態就變成隱藏,如果是隱藏的就變成顯現)。

知道了工作流程,下面就得解決每一步的疑問了。怎樣知道是鼠標單擊雙擊呢(click鼠標單擊事件),怎樣知道點的那個菜單呢(event對象),又怎樣判斷菜單目前的狀態呢(設定條件並判斷),狀態表現出來是利用了標簽屬性的什么原理呢(display:none block;或者visibility:hidden visible;會占用原來的空間)。

最后應該怎樣來實現這個全過程:用編程語言將思考的過程描述出來。

HTML代碼

<div id="menu">
<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>
</div>

JavaScript代碼

(1)給每個對象綁定事件
var oLis=document.querySelectorAll("#menu>ul>li");
oLis.forEach(function (item) {
             item.addEventListener('click', function(){
                item.style.display =(item.style.display == "none" )? "block" : "none";
             }, false);
         });
         

(2)事件委托(一次綁定,永久使用)
var oDiv=document.querySelectorAll("#menu");
function () {

    oDiv.addEventListener('click', function(event){
        event=event ||window.event;
        target=event.target||event.srcElement;
        target.style.display =(target.style.display == "none" )? "block" : "none";
             }, false);

(2)下面試一些書中提到的方法與思想

1.只要你堅持下去,寫代碼就是那沒簡單,記住三個詞:

借鑒:多閱讀,多分析,多學習一些成功的JavaScript的代碼,多逛一些JavaScript類的技術社區,論壇,博客等,多與一些技術牛人學習,借鑒其經驗和思路。

多思考:思考的深度決定了代碼的質量,因此多思考,多問幾個為什么在很大的程度上可以提高代碼的質量

多動手練習:實踐檢驗真理

2.JavaScript的基本設計策略:

寫代碼的前中后時,問三個問題:做什么?誰做?怎樣做?

應用程序的功能是什么?

這個應用程序要做什么?盡量具體一點,假設你想要在發送Email的時候使用一個HTML表單,考慮以下問題。

    表單將包括多少域
    自己輸入Email地址還是從一個列表中選取
    發送之前是否想要確認一下表單輸入?你打算確定什么內容?消息?Email地址?還是兩個都確認
    發送Email后發生什么事?是讓用戶轉到另外一個頁面還是什么也不用做
    多思考諸如此類的問題,你將會得到一個非常好的計划

訪問者是誰

使用什么瀏覽器
使用什么瀏覽設備,顯示器分辨率
使用哪種類型的網絡連接
應用程序中的JavaScript方法
應用程序要解決什么問題,能否實現我要的功能
盡可能的重復使用代碼,從一個地方粘貼到另一個地方能否使用
按時間順序定義函數
每個函數執行一個單一的操作
使用盡可能多的局部變量

3.編程的首要原則(s)是什么?

學習一項知識,必須問自己三個重要問題:

  • 它的本質是什么。
  • 它的第一原則是什么。
  • 它的知識結構是怎樣的。

先弄清你的問題是什么!弄清問題永遠是問題解決過程中的第一步和最重要的一步。代碼只是工具,不是手段。

不知道怎么最好地解決你手頭的問題(注:需求、架構、算法,技術選型,etc..),寫上一萬坨代碼也是浪費比特。知道什么時候不該編碼。

要把知識梳理成系統的結構,要讓頭腦中的知識層次清楚

(3)個人體會

1.學習知識時,一章一章學的時候,感覺挺有收獲,也挺容易的。跟着實例,或者按照別人教的方法更是感覺到非常有成就感,覺得都懂了,但是要求你脫離資料,獨自解決問題時,你總是會犯難。

  • 為什么會出現這種情況?

短暫的記憶,未經過驗證的自我良好感覺是具有欺騙性的

  • 如何解決這種問題?

那就是找點問題來問問自己,看看自己是不是真真的牢固的掌握了,還是只是自我良好的感覺而已。通過測試立馬就知道自己的能力如何,把自己的問題給暴露出來,所以測試還是挺有用的。

2.重要的事情優先。盡量避免瑣事騷擾,不重要的事情能不做就不做。

3.學習東西一定得多問自己幾個問題,尤其是那些你一看就明白

為什么這種解法是對的? 
為什么那種解法是錯的? 
為什么這種解法不是最優的? 
證明為什么沒有更優的解法?
這個東西有什么用,能夠解決什么問題,還只是好玩而已?

如果你感覺自己JavaScript學的不錯了,不妨自己考考自己,驗證驗證有沒有自欺欺人。

如何實現閉包?
為什么事件有冒泡捕獲?
瀏覽器之間有何差異?
何為dom,bom,有什么區別?
JavaScript的function原理是什么?
瀏覽器有那些JavaScript引擎?
是否認識!、||、三元操作符、單鏈式寫法、申明變量的縮寫方法、惰性載入?
如何判斷瀏覽器是否支持HTML5?
如何開發出跨設備,兼容性的代碼?
如何在不同瀏覽器中調試代碼?
DOM的默認事件、事件模型、事件委托、阻止默認事件、冒泡事件的方式等。
JS變量提升、匿名函數、原型繼承、作用域、閉包機制等。
有哪些js設計模式

學習編程就是學習一種思考方式,學習看透事物本質的一種鍛煉,只有不斷學習代碼才能知道怎樣寫出更好的代碼,沒事多問問自己問題。專注,少些浮躁,堅定信念,才能走的跟高更遠。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM