乙個小程式的經驗總結

2022-03-02 07:23:00 字數 1944 閱讀 2630

#0 本程式遞迴生成樹,樹在分叉時可能二叉,也可能三叉...,但不超過16叉,所以果斷用了陣列。

最終完成大概600行,最初估計大半天完成,最終花了三天。

最大感受:一旦資料定型,程式基本結構也定型了 | 自頂向下,化解複雜度控制很有效.

#1 資料型別應用 typedef 實現靈活性

1 typedef int normalint;

2 typedef char element; 

#2 運用常量實現一定程度的可配置性

1const normalint elementnumber = 32;

2const normalint indexcount = 32;

3const normalint resultidxcount = 4096;

4const normalint max_target = 32;

5const normalint max_pool_size = 4096;

6const normalint indexover = -1;78

const element datatableover = -1;

#3 對於重新整理陣列資料 eg. 剔除負數->

用了容易編碼的方式(申請同尺寸陣列然後來回交換),有時間的話應該嘗試下in place processing的方法。

同樣非遞迴方式畫出樹我也使用了同樣的伎倆,以後換個方式做。

即便這段**也可以通過傳遞引數,根據引數動態申請儲存器來加以改善.

normalint idx[indexcount];//

indexover

normalint len=1;

for (normalint m=1; index[m]!=indexover; m++)//

m<=index[0]

if (index[m] > -1)

for (normalint m=1; m#4 牢記:c只有一種引數傳遞方式,下面**演示了怎麼通過函式呼叫申請資源、釋放資源的過程

1int allocresourse( int ** p )67

int deallocresource(int **p)

1213

int printarrayelements()

#5 使用指標應謹慎,寫了下面這個函式我明白了間址指標的用途

1int destroytree(tree ** tree)

#6 使用assert

程式完成後,隨著實驗資料變更,由於大量中間資料(達到近40k條目)生成,總會發生陣列越界,雖然一開始也考慮到了這些,但並沒有採取防護措施,只是注釋了可能出問題的地方。其實這是不夠的,最簡單的方法自然就是使用斷言了。斷言的使用並非越多越好,而是只在必要的地方使用,這需要對程式邏輯有清晰的了解。最終檢查下來,只在三個地方新增了斷言,再有問題發生,斷言會自然提示。那麼生產性質程式呢,還是應當改變演算法或者將斷言部分換成相應**。

#7 熟悉偵錯程式

這樣可以實現快速定位問題位置。

#8 調整程式預設棧大小

一方面中間資料的問題,另一方面遞迴帶來的開銷,預設的1mb棧空間捉襟見肘,程式直接棧溢位,在配置項linker中修改成16mb,暫時解決了問題。詳情參閱windows via c/c++第16章。

下圖為visual studio 2012截圖.

#9 應用code analysis來改善**

設定如上圖左下角所示。

開啟後重新編譯程式會生成xml分析結果,還是挺有意思的。根據提示我成功挖出了另乙個bug,該bug被兩重湊巧因素掩蓋(intel處理器小端法&&資料處理順序),此前雖然觀察到了這個現象但沒找到原因,在使用此功能後...晚上突然想到了原因。

乙個專案經理的經驗總結

本人做專案經理工作多年,感到做這個工作最要緊的就是要明白什麼是因地制宜 因勢利導,只有最合適的,沒有什麼叫對的,什麼叫錯的,專案經理最忌諱的就是完美主義傾向,尤其是做技術人員出身的,喜歡尋找標準答案,耽誤了工作進度,也迷茫了自己。以下是本人一些做專案的個人體會,寫出來供大家指點,在討論過程中共同提高...

程式程式設計經驗總結(1)

近頃 総括報告 在近一段時間裡,我主要在進行 様 様 共進電機様開發,在這三個專案的開發過程中,有一些收穫,也產生了一些想法,希望可以和大家交流。我進入小組快 1個月了,從開始的練習模組到現在的正式專案,前後做了快10多個專案模組了,但是依然有bug出現!雖然大家都安慰我說 開始做都有bug的,不要...

如何架構乙個ios專案 個人經驗總結

搞ios開發整整2年多 一直都是寫 為了某個功能去寫 從來沒有仔細的考慮過 如何架構乙個專案 現今天 總結一下 架構乙個專案的基本流程 專案分為三層 ui層 bll 層 common層 ui層 做什麼?首先我會建立乙個 baseviewcontroller類 裡面會做一些比較基礎的 標題 左butt...