程序員自我修練-提升寫代碼的能力(轉)

 

 

首先讓咱們看一看剛入軟件公司會出現的狀況:

1. 你可能會經常發現,寫了一段代碼後,編譯程序時是一大堆的出錯 (緣由:語法不熟)

——別擔憂,這是每一個程序員必須經歷的事,這時候你就須要更大的耐心及細心,

對每一行代碼進行仔細人閱讀並改正,這個很重要,這能夠培養你的理解代碼能力,因此要常讀程序,不要等到程序運行之後才知道你的程序的結果。

——如何避免:在寫代碼之前,要認真的學習計算機語言的語法,如關鍵點,易錯點,易忘點。同時要自已動手寫自已的測試代碼,而儘可能不要抄別人的代碼示例。即便抄,在學習階段也儘可能不要每一行如出一轍的對着抄。而應對着代碼示例寫有所不一樣的例子。

好比:在學java 知識點時,你最好建一個工程把全部的代碼都寫到這個工程中,以便對照分析學習.

2. 你可能會經常發現,寫完一段碼後,編譯經過,但是運行起來卻出來不少邏輯上的錯誤。(緣由:理解錯誤或邏輯上想錯了)

——提升邏輯思惟和理解能力

3. 拿到一個需求殊不知從那裏開始(對系統不太瞭解)

4. 經常爲了一個小小的錯誤用了很長的時間,不知從那裏查,也查不出結果

5. 經常作出來的東西是有了東卻少了西(考慮不全)

6. 有時爲了一個特殊功能模塊的實現查了很工時間卻沒有查出結果來(備查的資料不全)

7. 有時是否要項目經理叫你作東,你作了徹底沒有必要的西?(溝通不及時)

8. 有時爲了能提早完成某一個任務,加班到深夜,但是到了明天卻效率低下,還不如不加班(要注意休息)

9. 有時自已認爲已測好了好屢次,能夠保證不會出錯,但是經測試人員一測試卻不少錯誤(不夠細心或測試方法有問題)

10. 有時爲了不出錯,經常全比寫代碼的時間超出兩倍用於測試(方法有誤)    

11. 有時寫好了一段代碼給質量管理人員時卻由於代碼不夠規範而致使重寫?(代碼不夠規範)


爲了寫好代碼(包括,代碼沒有問題,需求符合,健壯性好,總用時小),那咱們應該怎麼作呢,有沒有什麼方法沒有.

回答是確定的!!

能夠總結爲兩大關鍵點:一是養成好的編程習慣,二是針對自已的工做提升自已的知識含量.

一. 好的編程習慣

1. 寫程序前打個草稿能夠在內心,最好在紙上:目的要從總體上考慮程序的實現。若是公司採用建模的方式,有建模工具(rose ,visio )那是最好不過的了。

2. 注意休息,不要浪費自已的休息時間,用去了自已的時間不但會寫出的代碼由於注意力不集中而會經常出現代碼的質量有問題,邏輯常出錯

3. 要善於收集相關的專業開發上的資料,以便之後能更快更好的解決問題目。提倡公司能提供內部知識勾通的工具(如知識論壇,內部即時聊天器);提倡公司內部有技術資料的共享庫,提升解決問題的能力.

4. 提升對所寫的模塊的相關全局把握能力,在寫程序中要最好先詳細設計後再發布.

5. 要學會與他人溝通如非工程師,學會溝通的不一樣方式,提升溝通的效率。

二.不一樣的目標不一樣的知識重點

(一)目標:程序員

        職責:根據詳細設計文檔,或根據 高級程序員的設計進行相關的開發。

1. 要學會看相關的需求文檔及詳細設計文檔。

注意:你必需要經過閱讀這些文檔把握住其中的重點,關鍵點,相關易漏點

2. 若是公司裏會用UML來相互的溝通,這時你必需要深入理解UML 的相關知識,必定要注意千萬不要對UML圖只知其一;不知其二的狀況下,就着寫代碼,那樣會錯的很慘。

3.學好對應的計算機語言的基礎知識,如:程序的語法,關鍵點,易錯點,對應的出錯如何出理,如何才能把對就的程序寫的鍵壯一些

4.若是用到數據庫的內容,在學會sql的前提下,儘可能學會數據庫原理中的相關sql內容, 固然爲了提升查詢的能力也能夠增長一點

5.若是用到面向對像的語言那最好學點相關的設計模式,這樣的能夠增長代碼的擴展性,及可維護性等,可以理解詳細設計中的模塊間的設計原則這個也能夠提升對模塊的內容編寫的正確性.

6.你必定要學會公司內部的通用的編碼規範。

7.學習如何作單元測試比較好.必需要熟悉相關的單元測試工具.

8.要不斷的對相關知識進行總結,同時也要必須把相關的資料進行整理和學習,在學習事後的資料中你能夠在遇到問題時更快的找到問題的答題。

9.在開發你必須記錄下你們常出錯的地方及你們的解決方法,這個對你之後錯誤的避免有很大的做用.

10.在寫代碼中時必須把上面寫過代碼記在內心,這樣就能夠養成習慣,提升代碼的速度

11.對數據庫操做時,要儘可能共用Connection,並小用以減小Connection的數量


(二)目標: 高級程序員

        職責:對需求文檔進行系統相關模塊的詳細設計,並負責對程序員的支持及指導和相關核心模塊的編寫

因此不但要學會相關程序員要的知識,同時還要學會難度比較大的知識。

1. 程序員的知識,如設計模式你必定要不是簡單的看要懂,你還要應用設計模式對相應的模塊進行相關的詳細設計。

2. 要學好相關詳細設計的工具作的有的放矢,這樣能夠更好提升對自已的設計的表達

3. 爲了提升系統的運行效率會運用到

a. 數據庫的表結構如何建才能使應用的要查詢sql 更快。這時可要認真認真的學習同樣數據庫原理,千萬不要覺得采用數據庫的範式越高系統的運行效率會越好,有時候適當的表冗餘能夠大幅度的提升系統的查詢效率. 同時適當的建索引,視圖,存儲過程也是提升系統對數據庫的查詢的效率之一。

b. 學習多線程的編程,不過千萬不要覺得線程數越多運行的速度會越快,通常線程的數量超過必定的數量後,系統的運行速度反而會變慢。爲了應用好多線程,操做系統這本書也要關於同步及相關進程和線程的知識必不可少。

c. 設計好的一程序的好的算法,可要比起解一道同一複雜的數學題,要難的多,因此要在學好的相關數學的知識上(如線性代數,離散數學,機率論,數理統計)。更要深刻計算方法,及數據結構,讓數學問題用計算機來解決。

4. 爲了讓系統設計的更加的可擴展性,穩定性,設計模式和軟件工程但是不能少的東西。因此必須把設計模式用於模式級的設計.

5. 若是公司採用的是Rose (UML)進行設計的話,你對於UML 的理解必定要很是的準確,同時你要跟小組中的程序之間進行充分的UML概念上及對應用例圖,類型圖,對象圖,協做圖的意思多寫一些註釋加深你們對你的設計上的理解。



(三)目標:系統分析員

           職責:作好與客戶之間的關係,同時對客戶的需求要正確的理解,要選擇合適的開發技術,同時作好與客戶間溝通交流,學會說服對方。

1.學會對客戶的溝通:要正確理解客戶的需求同時要保證相互之間的溝通順暢。

2.對了解來的需求要能用筆正確的描述下來,並能很好的傳敘給其餘人。這時要學會用如ROSE 等的軟件建模的工具。和powerdesign等的數據庫建模工具。和相關的UML,數據流程圖及相關的內容的知識。

3.不但要全面的瞭解客戶的需求並且還要對需求進行將來的可能的改變要有至關多的瞭解。

4.全面的瞭解客戶的需求後,要選擇合適的相關技術用於開發,:

這時要學習各類知識

a.先擇數據庫:db2,infomix ,oracle ,sql server,mysql 的優缺點,能夠從中選擇最適合的數據庫及理由。

b.設計數據庫:要紮實在數據庫的理論(數據庫原理,數據庫系統設計)及相關數據庫設計經驗,要儘可能多的分析過去數據庫設計,分析這麼設計數據庫的好處。這時可能要用到 powerdesign等工具。 

c.寫需求說明文檔和概要設計文檔,同時要學會要分析相關需求說明文檔的須要的內容的相關知識,如人員工時的計算方法, 通常會用 project 來分析相關的項目的內容。

d.選擇合適的程序語言及相關的架構,通常主流的架構是 J2EE和.net的相應的優勢及它們之間的結合,如採用soap xml進行相關的結合,或用java-com 橋 進行相關的功能的調用。和它們之間的相關語言優缺點

e.還要根據b/s,c/s 結構對開發的網絡影響的相關內容採起選擇。

5.學會說服對方,畢竟客戶都不是個個是軟件專家,他們的選擇有時未必是正確的因此學會說服對方,是系統分析員必備的能力條件.                 



三.訓練的方法:

1.計劃行事:

(1.設定你的將來的學習目標

a.將來要成爲何樣的人(主要是工做角色,如程序員, 高級程序員,系統分析員)

b.你近期要成爲何樣的人(當前的工做職責是什麼,若是隻寫代碼是程序員等)

c. 要完成近期的工做所必須的知識(如java基礎知識等),關鍵的知識(如java中
關鍵要用到的知識有,面向對象等)易錯的知識(比較原來的已有知識進行合對)

(2.設定你的學習目標後,並要有針對性的對應目標設定學習時間的按排及學習路線。並直觀的記錄在案,以便之後隨時覈對,

(3.經常抽出必定的時間認真核對計劃的完成狀況,若是沒有按時完成計劃的內容。分析緣由,儘可能想法遇上計劃內容若是存認是計劃有誤,要認真總結計劃失敗出錯的緣由,對你的將來有很大的幫助。

注意:不要對計劃的按排過於樂觀 要儘可能的考慮實現中的各類狀況,同時適當按排一些緩衝時間,以便真正能按照計劃行事,以提升按計劃行事信心,同時這能有效避免出現計劃中途成沒有意義的東西。

2.針對工做角色對自已的能力進行培養和知識進行學習。

關鍵的能力:

(1.記憶能力:要學會把自已的 寫的代碼和改的代碼記的清清楚楚。要能提升效率。 (2.邏輯思惟能力:要多多的看別人的複雜邏輯的代碼,分析複雜邏輯的運算。 (3.全局能力: 不要再範改了東,卻西出錯。(構造軟件這個很重要) (4.學習能力: 並非每一個項目都你是所熟悉的項目的,並非每一個項目中的知識你都知道,要掌握最新的技術和最有用的知識,是最關鍵的。要學會,提升能力,這個東西是永遠對本身有好處的。 (5.溝通能力; 學會幽默,學會講故事,學會交朋友,學會禮節。 (6.自制能力:若是一我的不能自制那這我的之後,不會有很大成果,即便很大機會發展起了,但是由於沒有自制能力很容易被人利用,或本身明明知道怎麼作,但是就是不能控制本身的慾望.而常作下沒法挽回在錯誤. 四.例:java 程序員的知識結構及學習流程: (一) 學習相關工做必須的知識 1.Java 語言的基礎(推薦書:《 java 編程思想》) 關鍵: (1.     java 面向對象及對應的程序現實 (2.     java 多線程 (3.     java 網絡 socket  (4.     應用界面 2.學會用智能集成開發工具jbuilder,eclipse等一種,根據資料裏的內容,自已寫與例程相似的代碼,但注意不要直接抄它,必定要自已寫。同時最好寫到一個工程中以便對比。 3.若是用B/S結構要學習一下 JSP 推薦書:《 JSP 2.0技術手冊 》 關鍵: (1. 界面處理:  a . HTML——超文本標誌語言:用於顯示頁面如:超文本連接, 表格,各類標誌等。 b. CSS———層疊樣式表:控制正文外觀的一組格式.用於美化HTML頁面。  c. javaScript—嵌入HTML頁面瀏覽器來執行的腳本語言:讓頁面能夠根據用戶的操做或事先設置等在客戶端進行動態變化,並且不需傳回服務器。好比: 對錶單輸入的正確性作客戶端驗證. (2.jsp元素:如java代碼寫法,對應標誌---jsp:include,jsp:useBean,jsp:setProperty, jsp:getProperty等.jsp的幾大對 (3. javaBean及其在jsp 中的調用和相關應用. (4. 其餘技術: a. 如何操做數據庫—用jdbc(可能要補充一些數據庫的知識,如oracle ,sql server, 包括如何寫高效率的查詢sql,存儲過程等) , b. 如何發送email—用javaMail, c. 如何學習如何用實現文件的上傳下載,若是操做文件, d. 如何操做xml --用jdom 及 jaxp(這時有必要學習一下xml 的語法如 dtd等) e. 如何遠程方法調用—用 rmi f. 如何進行消息服務 ---用 jms 5.再有些公司會用到 J2EE 的架構如 EJB 做爲業務邏輯. (1.EJB中要分清 (2. struts MVC (3. Hibernate 操做數據庫 6.最好學習一下UML  學用Rose建模 五 忠告: 1. 不要覺得自已不好,要明白每一個人都是這樣一步一個腳印的走過來的。(咱們要有信心) 告訴自已:比爾蓋次,也是同咱們同樣,出生時也是巴掌大. 咱們只有多學,多練纔可能有出路. 2. 不要覺得自已學的多就很強,世界上的高手多的是,問問本身,你每小時能夠寫幾行代碼,代碼一次寫下來有多少錯誤,若是你一次寫下沒有錯誤,一小時能夠寫1000代碼,那纔是真正的高手. 3 . 不要覺得自已沒有項目作就會落後於他人,人家是參加了不少項目,但是人家只是項目中的一個小角色,若是咱們在空時能都寫一些開源的項目,或本身開發和設計一些有用的開源的項目,水平及能力很快就上來了. 4.   不要覺得本身作過不少的項目就很了不得了。你能說你作的項目中,你能體會整個項目爲何要這樣設計,爲何要這樣開發嗎?相信絕大多數是否認的回答。那還不如多學習一些已作的項目,瞭解他們爲何要這麼作,爲何這麼開發,多看一下它們的項目的文檔,咱們能明白不少,這樣把他們的經驗放於你將來可能要接手的項目,這樣不是更好嗎? 5. 不要覺得本身的學習能力很牛,你能快速閱讀一本書又能快速掌握它的內容嗎?
相關文章
相關標籤/搜索