全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1855
推到 Plurk!
推到 Facebook!

良好編程習慣的養成——寫給電腦系大學生

 
gui_tan
一般會員


發表:1
回覆:0
積分:0
註冊:2008-11-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-30 12:43:50 IP:218.23.xxx.xxx 訂閱








不少同學對語言的重視超出了我的想象,這使我不得不先說一下。這幾乎是個經典問題了,不僅僅是學生,據我所知,不少論壇上也有諸如此類的問題。我始終認爲,語言僅僅只是一個工具,不同的應用選擇不同的工具。不要被語言所束縛,你應該去駕馭這些工具。本人的看家語言,用做過通信、資料庫開發、底層視頻採集等;

F-Basic通過之二級等級考試;
C()做過網站,寫過簡單的腳本;
Visual Basic.netMIS做過用戶註冊功能;
VC DelphidllDirectShowC Delphi調用過,寫過腳本;
SQLSQL最近,正在看相關的開發技術;
(http://hi.baidu.com/66557239
內打過個比方:如果你有一口寶刀,你應該首先把這刀法煉好;如果你已經煉就了蓋世刀法,有一天需要用槍了,憑你的心智,可能槍拿起來你就會用,而且不久又會成爲一個槍神;有一天需要用炮了,依你對武器的理解,……不同的應用,選擇不同的工具,一定要對某一種工具有很深的理解,這樣才能觸類旁通,以不變應萬變。

第一,培養寫碼的美感;寫出來的代碼,應該給人以整體的美的感受,看起來很整潔,讓人願意看,願意細細研究;一個專案,應該有一個統一的編碼規範,團隊成員在寫碼的時候都遵循這個規範,如果做的很好的話,整個專案下來,應該就像是一個人在寫碼;這樣團隊內的任何成員拿到代碼都可能感覺這代碼是似曾相識,爲今後的維護是有很大好處的;當然,如果我們沒有一個統一的規範,一個連思路都很模糊的程式師,如果讓他寫出整潔的代碼,可能是一種奢望,如此看來,優秀的代碼也是技術成熟的一種表現。

DelphiC/C C#JAVA/第三,創建與釋放的嚴格對應;在中,這裏特指那些自己創建的物件、自己申請的記憶體空間,都要自己來釋放;當然,在中,由於採用了代碼託管,而有垃圾回收機制,一般情況下,你創建的物件不需要你關心回收問題;一樣,來處理垃圾回收問題,不需要你過多的關心;

第五,高內聚、低耦合;保持函數(過程)、單元、功能模組、專案的最大的獨立性;注意劃分函數過程、單元、功能模組等的粒度問題。舉個例子,比如,我們劃分函數過程,那麽盡可能讓一個獨立的小功能寫在一個函數過程內。往大了想,比如單元、功能模組、專案等都是一樣,盡可能提高內聚性,降低單元與單元之間、模組與模組之間的耦合性。如果這一點我們能夠做的很好,比如模組與模組之間均採用介面的方式耦合,那麽如果其中一個模組的功能有較大的調整,那麽沒有問題,我們只需要保持介面不變,調整這個模組的內部實現就可以了,而不會影響與其他模組之間的耦合。
第六,相容性;關於相容性,我主要談三個方面:語句的相容性;由於我們的系統可能需要同時使用,甚至可能要求支援,所以我們在寫語句的時候,就要考慮書寫通用的語句,而不能寫任一資料庫所特有的寫法;如果這一點做的很好,我們可以根據用戶的規模或者要求,非常靈活的更換對不同資料庫的支援;、不同軟硬體環境的相容性;我覺得這一點,可以算得上是典範,其軟體幾乎可以在任何可以裝起來的機器上有很好的表現。就拿我最近發現的的一個長處來說吧,我的顯示器換寬屏了,這時我才發現,視窗對內容的顯示是可以支援寬屏的,而且效果很好,相比之下,不能充分利用寬屏的一些網站表現就很差了,包括一些桌面軟體的表現也不盡人意,當然,這一點我也承認,自己設計的軟體也沒有充分考慮或者沒有很好的解決這個問題;、軟體的向下相容;這個說起來大家都知道是什麽意思,但是一到實際應用中,就會很容易被忽略,我最近就遇到過這麽一個問題。我利用面向物件技術寫的一個功能模組,早期的版本,是不需要後臺表中的某欄位的,由於修改一個,需要用到這個欄位了。這時候,我只改了當前的功能,用了這個欄位,但是沒有考慮到,以前的版本,用戶現在手上正在使用的版本,這個欄位可能並沒有值(因爲之前是用不到的),這就出現了向後相容的問題。
第八,高效性;讓自己的程式飛起來。關於高效性,我主要想從表結構設計,業務操作,代碼優化三方面談談。首先,我認爲表結構設計不僅僅要完成其存儲資料的功能,而且要考慮表結構設計的高效性與簡潔性,在這裏,主要說一下高效性。這個高效性包括傳輸的高效性和保存的高效性,傳輸的高效性,主要是指,單位時間內,能夠將較多的資訊由資料庫傳送至軟體內可能是或者;保存的高效性,主要是指,存儲相當的信息量,所用的時間最短。這裏有一個指導思想,用盡可能少的資訊符號來傳達完整的資訊。舉個例子,比如我寫的管理系統,裏面有一張表,用於存儲的屬性資訊。的屬性包括編號、名稱、嚴重性、優先順序別、所屬專案、提交人等,通常情況下,我們是把這些資訊直接寫入表內就是;但是如果按照上面的指導思想去考慮,像嚴重性、優先順序別、所屬專案、提交人這類資訊,我們都可以把他們做成基本資料,然後用一個編號與之對應,這樣我們在保存和傳輸的時候,只需要傳輸這些編號即可,大大提高了效率。其次,如果有可能,我們在設計表的時候,可以考慮業務上的需要,比如,需要操作的頻度非常大的表,我們盡可能將其做的簡單,信息量做到最精簡,如果需要更詳細的資訊,我們再去關聯表中取詳細資訊;這樣做的好處在於,需要頻繁操作的表,回應速度、查詢速度都會非常快;最後說一下代碼優化,現在我們的機器配置在不斷的上升,就說記憶體吧,現在的記憶體已經是標配了,的記憶體也很常見,所以在我們寫代碼的時候,可以考慮利用這些記憶體,去換取時間,而不是一味地盡可能減小記憶體佔用。我還是說說我寫的管理系統裏面的一個典型寫法,在系統啓動的時候,我把諸如嚴重性、優先順序別、專案名稱等這些相對固定的內容讀入到記憶體中,然後軟體在任何需要通過編號顯示名稱的地方,直接從記憶體中讀取這些資訊,這個時間幾乎可以忽略不計,效率提高了倍。
不要浮躁,沈下心來,把基礎打好,把理論性的東西學透,然後應用於實踐,在實踐中煆煉、成長;提高對自己的要求,這些要求可以到一些招聘網站上查詢得到,比如某職位招人,需要什麽樣的技能,到什麽程度,自己經常性的去對比一下自己,還有多少差距,找出不足,繼續努力;另外,還要珍惜一切實戰的機會,只要有機會
[code delphi]
請在此區域輸入程式碼
[/code]

[code cpp]
請在此區域輸入程式碼
[/code]

[code c#]
請在此區域輸入程式碼
[/code]

[code xml]
請在此區域輸入程式碼
[/code]

[code vb]
請在此區域輸入程式碼
[/code]

[code sql]
請在此區域輸入程式碼
[/code]
就不要錯過,沒有機會,自己創造機會,有時間可以自己做個小專案出來,這個專案的要求越高,只要你最終實現了,那麽你提高的就越多。


作者:深深愛你
日夜書於蚌埠
系統時間:2024-04-24 1:39:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!