完成以下步驟:
1、正確的問題
明確問題,這場(chǎng)戰(zhàn)役就成功了90%。必須仔細(xì)定義一個(gè)問題的輸入、輸出的流程場(chǎng)景和數(shù)據(jù)范圍、以及對(duì)應(yīng)的約束條件和性能指標(biāo)。對(duì)小問題的仔細(xì)分析有時(shí)可以得到明顯的實(shí)際益處、幾分鐘的仔細(xì)研究可以大幅度消減代碼的長度、程序員時(shí)間和程序運(yùn)行時(shí)間。
2、定義數(shù)據(jù)結(jié)構(gòu)
不同的問題需求需要定義不同的數(shù)據(jù)結(jié)構(gòu),有限定義內(nèi)的稠密集合?稀疏?樹?索引?…
3、設(shè)計(jì)算法
設(shè)計(jì)復(fù)雜度更精巧的算法
4、時(shí)間空間折中與雙贏
沒有雙全法,那么就得根據(jù)需要用空間換時(shí)間,或者相反。通常前者的資源更稀缺需求更重要,當(dāng)然有時(shí)候減少程序的空間需求也會(huì)減少運(yùn)行時(shí)間,比如減少了IO操作。
5、簡(jiǎn)單的設(shè)計(jì)
正如機(jī)械設(shè)計(jì)師贊揚(yáng)一個(gè)好的系統(tǒng):“結(jié)構(gòu)簡(jiǎn)單、部件很少、易于維護(hù)、非常堅(jiān)固”;“設(shè)計(jì)者確定其設(shè)計(jì)已經(jīng)達(dá)到了完美的標(biāo)準(zhǔn)不是不能再增加任何東西我,而是不能再減少任何東西。” 更多程序員應(yīng)該使用該標(biāo)準(zhǔn)來檢驗(yàn)自己完成的程序。簡(jiǎn)單的程序通常比具有相同功能的復(fù)雜程序更可靠、更安全、更健壯、更高效、而且易于實(shí)現(xiàn)和維護(hù)。
ps:就此突然想到了前幾日分享的國寶級(jí)折紙大師,其完成折紙前反復(fù)計(jì)算推演才最終僅僅用一張紙不用任何工具折成生動(dòng)萬物,這其實(shí)和我們老祖宗高超的榫卯設(shè)計(jì)一樣,不要一根釘子。
高低之別其實(shí)是沉浸的匠心,都是工程,從折紙和榫卯中我們可以有很多的思考、靈感和啟發(fā),故配上幾張圖。
? ?掌門艾老師
? ?2017年3月18日晨讀且思