當前位置:
首頁 > 最新 > 使用思維導圖,優雅的完成自己的代碼

使用思維導圖,優雅的完成自己的代碼

作者:九死蠶傳人bo

https://segmentfault.com/a/1190000012435669

我自己常常在寫代碼的時候,會突然搞不清變數用來幹嘛的,也會被理不清的邏輯搞得自己異常煩躁,我甚至常常暗示自己我不適合寫代碼,思維總是那麼不清晰。直到我發現了思維導圖的妙用。

最開始使用思維導圖的時候,我其實是用來記知識點的。然而某一刻就靈光一閃了,嘗試使用了思維導圖來記錄代碼變數和邏輯,最後居然就輕鬆的把以為要理很久的問題搞定了。為了驗證自己的想法,我又嘗試自己寫了一些小東西,對於我們這些初學者,肯定是選項卡和分頁什麼的最常用了,因為裡面有一些變數總是那麼令人難以捉摸,這裡我以分頁為例,向大家分享我是如何用腦圖完成分頁的。

這裡省去使用ajax獲取後台數據的部分,我自己創建一個js文件,裡面用JSON存了一點數據。一般來說使用ajax都是一頁一頁的獲取數據,我這裡直接將所有數據都顯示出來。

首先,根據多方了解,翻閱資料,找到了一種實現分頁的方式,大概就是用一些變數來控制,比如當前頁,總頁數,還有第幾頁的按鈕等等,然後再寫一個比如showPage()來顯示當前頁的內容,通過變數的改變來控制showPage()的顯示。

首先用css畫一個大概樣式圖

然後自行腦補一下想要實現的功能

理清變數和功能方法

然後我們以showBtn()為例,思考如何完成這個函數。

我們默認每一個button頁有5個按鈕,為了防止最後一頁不夠5個,因此先隱藏所有的按鈕,然後通過循環將存在的按鈕顯示出來

於是我就可以完成showButton函數如下

functionshowButton(){

var

$numb=$(".numb"),

min=(btn_cur-1)*5+1,

max=;

if(btn_cur==btn_acount){

max=page_acount+1;

}elseif(btn_cur

max=(btn_cur*5)+1;

};

$numb.hide();

for(vari=min;i

!function(){

$numb.eq(i%5-1).show();

$numb.eq(i%5-1).attr("data-list",i);

$numb.eq(i%5-1).html(i);

}();

}

}

當我沒有使用腦圖寫出來的代碼是這樣的 – -!,完全沒邏輯可言有木有

functionshowButton(){

var$numb=$(".numb");

if(btn_acount==1){

$numb.hide();

$(".more").hide();

$(".last").hide();

for(vari=;i

$numb.eq(i).show();

$numb.eq(i).attr("data-list",i);

}

};

varmin=(btn_cur-1)*5+1;

varmax=;

if(btn_cur==btn_acount){

max=page_acount+1;

}elseif(btn_cur

max=btn_cur*5+1;

};

$numb.hide();

for(vari=min;i

$numb.eq(i%5-1).show();

$numb.eq(i%5-1).attr("data-list",i);

$numb.eq(i%5-1).html(i);

}

}

在來一輪邏輯整理,當函數都寫好,變數都整明白了,就可以添加事件了,先來一輪思維整理。

於是按照這個思路,輕鬆完成事件添加,代碼如下

$(".pos_page").on("click",function(e){

// e.preventDefault();

var$target=$(e.target);

varclassName=$target.attr("class").split(" ")[];

$target.on("selectstart",function(){

returnfalse;

});

switch(className){

case"prev_page":

if(index!=){

index-=1;

page_cur-=1;

}elseif(index==){

if(btn_cur>1){

index=4;

btn_cur-=1;

page_cur-=1;

}elseif(btn_cur==1){

return;

}

};

showPage(page_cur,page_every);

showButton();

setFocus();

break;

case"next_page":

if(btn_cur==btn_acount){

if(index==page_acount%5-1){

return;

}elseif(index

index++;

page_cur++;

}

}elseif(btn_cur

if(index==4){

index=;

btn_cur+=1;

page_cur+=1;

}elseif(index

index++;

page_cur++;

};

};

showPage(page_cur,page_every);

showButton();

setFocus();

break;

case"numb":

page_cur=$target.attr("data-list");

index=page_cur%5-1;

console.log(page_cur);

showPage(page_cur,page_every);

showButton();

setFocus();

break;

case"more":

if(btn_cur

btn_cur+=1;

index=;

showButton();

setFocus();

page_cur=$(".numb").eq().html();

showPage(page_cur,page_every);

};

break;

case"last":

if(btn_cur!=btn_acount){

btn_cur=btn_acount;

index=;

page_cur=(btn_cur-1)*5+1;

showPage(page_cur,page_every);

showButton();

setFocus();

};

default:

break;

}

});

主要是通過類名來區分目標DOM,通過自定義data-list屬性來標識當前頁

總的來說,與我而言,通過思維導圖,是寫出思維嚴密,易於維護的代碼的有效途徑,看上去浪費了時間,其實增加了非常多的效率。

覺得本文對你有幫助?請分享給更多人。

關注「程序員寶庫」公眾號,直接獲取各種編程資料!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員寶庫 的精彩文章:

TAG:程序員寶庫 |