對(duì)每一行代碼進(jìn)行仔細(xì)人閱讀并改正,這個(gè)很重要,這可以培養(yǎng)你的理解代碼能力,所以要常讀程序,不要等到程序運(yùn)行以后才知道你的程序的結(jié)果。
──如何避免:在寫代碼以前,要認(rèn)真的學(xué)習(xí)計(jì)算機(jī)語(yǔ)言的語(yǔ)法,如關(guān)鍵點(diǎn),易錯(cuò)點(diǎn),易忘點(diǎn)。同時(shí)要自已動(dòng)手寫自已的測(cè)試代碼,而盡量不要抄別人的代碼示例。即使抄,在學(xué)習(xí)階段也盡量不要每一行一模一樣的對(duì)著抄。而應(yīng)對(duì)著代碼示例寫有所不同的例子
比如:在學(xué)java 知識(shí)點(diǎn)時(shí),你最好建一個(gè)工程把所有的代碼都寫到這個(gè)工程中,以便對(duì)照分析學(xué)習(xí)
2. 你可能會(huì)常常發(fā)現(xiàn),寫完一段碼后,編譯通過,可是運(yùn)行起來卻出來很多邏輯上的錯(cuò)誤。(原因:理解錯(cuò)誤或邏輯上想錯(cuò)了
9. 有時(shí)自已認(rèn)為已測(cè)好了好多次,可以保證不會(huì)出錯(cuò),可是經(jīng)測(cè)試人員一測(cè)試卻很多錯(cuò)誤(不夠細(xì)心或測(cè)試方法有問題
11. 有時(shí)寫好了一段代碼給質(zhì)量管理人員時(shí)卻因?yàn)榇a不夠規(guī)范而導(dǎo)致重寫?(代碼不夠規(guī)范)
為了寫好代碼(包括,代碼沒有問題,需求符合,健壯性好,總用時(shí)?。?,那我們應(yīng)該怎么做呢,有沒有什么方法沒有.
回答是肯定的?。?/div>
可以總結(jié)為兩大關(guān)鍵點(diǎn):一是養(yǎng)成好的編程習(xí)慣,二是針對(duì)自已的工作提高自已的知識(shí)含量.
一. 好的編程習(xí)慣
1. 寫程序前打個(gè)草稿可以在心里,最好在紙上:目的要從整體上考慮程序的實(shí)現(xiàn)。
如果公司采用建模的方式,有建模工具(rose ,visio )那是最好不過的了。
2. 注意休息,不要浪費(fèi)自已的休息時(shí)間,用去了自已的時(shí)間不但會(huì)寫出的代碼因?yàn)樽⒁饬Σ患卸鴷?huì)常常出現(xiàn)代碼的質(zhì)量有問題,邏輯常出錯(cuò)
3. 要善于收集相關(guān)的專業(yè)開發(fā)上的資料,以便以后能更快更好的解決問題目。提倡公司能提供內(nèi)部知識(shí)勾通的工具(如知識(shí)論壇,內(nèi)部即時(shí)聊天器);提倡公司內(nèi)部有技術(shù)資料的共享庫(kù),提高解決問題的能力.
4. 提高對(duì)所寫的模塊的相關(guān)全局把握能力,在寫程序中要最好先詳細(xì)設(shè)計(jì)后再發(fā)布.
5. 要學(xué)會(huì)與他人溝通如非工程師,學(xué)會(huì)溝通的不同方式,提高溝通的效率。
二. 不同的目標(biāo)不同的知識(shí)重點(diǎn)
(一) 目標(biāo):程序員
職責(zé):根據(jù)詳細(xì)設(shè)計(jì)文檔,或根據(jù)高級(jí)程序員的設(shè)計(jì)進(jìn)行相關(guān)的開發(fā)。
1. 要學(xué)會(huì)看相關(guān)的需求文檔及詳細(xì)設(shè)計(jì)文檔。
注意:你必須要通過閱讀這些文檔把握住其中的重點(diǎn),關(guān)鍵點(diǎn),相關(guān)易漏
2. 如果公司里會(huì)用UML來相互的溝通,這時(shí)你必須要深刻理解UML 的相關(guān)知識(shí),一定要注意千萬不要對(duì)UML圖一知半解的情況下,就著寫代碼,那樣會(huì)錯(cuò)的很慘。
3. 學(xué)好對(duì)應(yīng)的計(jì)算機(jī)語(yǔ)言的基礎(chǔ)知識(shí),如:程序的語(yǔ)法,關(guān)鍵點(diǎn),易錯(cuò)點(diǎn),對(duì)應(yīng)的出錯(cuò)如何出理,如何才能把對(duì)就的程序?qū)懙逆I壯一些
4. 如果用到數(shù)據(jù)庫(kù)的內(nèi)容,在學(xué)會(huì)sql的前提下,盡量學(xué)會(huì)數(shù)據(jù)庫(kù)原理中的相關(guān)sql內(nèi)容, 當(dāng)然為了提高查詢的能力也可以增加一點(diǎn)
5. 如果用到面向?qū)ο竦恼Z(yǔ)言那最好學(xué)點(diǎn)相關(guān)的設(shè)計(jì)模式,這樣的可以增加代碼的擴(kuò)展性,及可維護(hù)性等,能夠理解詳細(xì)設(shè)計(jì)中的模塊間的設(shè)計(jì)原則這個(gè)也可以提高對(duì)模塊的內(nèi)容編寫的正確性.
6. 你一定要學(xué)會(huì)公司內(nèi)部的通用的編碼規(guī)范。
7. 學(xué)習(xí)如何做單元測(cè)試比較好.必須要熟悉相關(guān)的單元測(cè)試工具.
8. 要不斷的對(duì)相關(guān)知識(shí)進(jìn)行總結(jié),同時(shí)也要必須把相關(guān)的資料進(jìn)行整理和學(xué)習(xí),在學(xué)習(xí)過后的資料中你可以在遇到問題時(shí)更快的找到問題的答題。
9. 在開發(fā)你必須記錄下大家常出錯(cuò)的地方及大家的解決方法,這個(gè)對(duì)你以后錯(cuò)誤的避免有很大的作用
10. 在寫代碼中時(shí)必須把上面寫過代碼記在心里,這樣就可以養(yǎng)成習(xí)慣,提高代碼的速度
11. 對(duì)數(shù)據(jù)庫(kù)操作時(shí),要盡量共用Connection,并小用以減少Connection的數(shù)量
(二) 目標(biāo):高級(jí)程序員
職責(zé):對(duì)需求文檔進(jìn)行系統(tǒng)相關(guān)模塊的詳細(xì)設(shè)計(jì),并負(fù)責(zé)對(duì)程序員的支持及指導(dǎo)和相關(guān)核心模塊的編寫
所以不但要學(xué)會(huì)相關(guān)程序員要的知識(shí),同時(shí)還要學(xué)會(huì)難度比較大的知識(shí)。
1. 程序員的知識(shí),如設(shè)計(jì)模式你一定要不是簡(jiǎn)單的看要懂,你還要應(yīng)用設(shè)計(jì)模式對(duì)相應(yīng)的模塊進(jìn)行相關(guān)的詳細(xì)設(shè)計(jì)。
2. 要學(xué)好相關(guān)詳細(xì)設(shè)計(jì)的工具做的有的放矢,這樣可以更好提高對(duì)自已的設(shè)計(jì)的表達(dá)
3. 為了提高系統(tǒng)的運(yùn)行效率會(huì)運(yùn)用到
a. 數(shù)據(jù)庫(kù)的表結(jié)構(gòu)如何建才能使應(yīng)用的要查詢sql 更快。這時(shí)可要認(rèn)真認(rèn)真的學(xué)習(xí)一樣數(shù)據(jù)庫(kù)原理,千萬不要以為采用數(shù)據(jù)庫(kù)的范式越高系統(tǒng)的運(yùn)行效率會(huì)越好,有時(shí)候適當(dāng)?shù)谋砣哂嗫梢源蠓鹊奶岣呦到y(tǒng)的查詢效率. 同時(shí)適當(dāng)?shù)慕ㄋ饕?視圖,存儲(chǔ)過程也是提高系統(tǒng)對(duì)數(shù)據(jù)庫(kù)的查詢的效率之一
b. 學(xué)習(xí)多線程的編程,不過千萬不要以為線程數(shù)越多運(yùn)行的速度會(huì)越快,一般線程的數(shù)量超過一定的數(shù)量后,系統(tǒng)的運(yùn)行速度反而會(huì)變慢。為了應(yīng)用好多線程,操作系統(tǒng)這本書也要關(guān)于同步及相關(guān)進(jìn)程和線程的知識(shí)必不可少。
c. 設(shè)計(jì)好的一程序的好的算法,可要比起解一道同一復(fù)雜的數(shù)學(xué)題,要難的多,所以要在學(xué)好的相關(guān)數(shù)學(xué)的知識(shí)上(如線性代數(shù),離散數(shù)學(xué),概率論,數(shù)理統(tǒng)計(jì))。更要深入計(jì)算方法,及數(shù)據(jù)結(jié)構(gòu),讓數(shù)學(xué)問題用計(jì)算機(jī)來解決。
4.為了讓系統(tǒng)設(shè)計(jì)的更加的可擴(kuò)展性,穩(wěn)定性,設(shè)計(jì)模式和軟件工程可是不能少的東西。所以必須把設(shè)計(jì)模式用于模式級(jí)的設(shè)計(jì).
5. 如果公司采用的是Rose (UML)進(jìn)行設(shè)計(jì)的話,你對(duì)于UML 的理解一定要非常的準(zhǔn)確,同時(shí)你要跟小組中的程序之間進(jìn)行充分的UML概念上及對(duì)應(yīng)用例圖,類型圖,對(duì)象圖,協(xié)作圖的意思多寫一些注釋加深大家對(duì)你的設(shè)計(jì)上的理解。
(三) 目標(biāo):系統(tǒng)分析員
職責(zé):做好與客戶之間的關(guān)系,同時(shí)對(duì)客戶的需求要正確的理解,要選擇合適的開發(fā)技術(shù),同時(shí)做好與客戶間溝通交流,學(xué)會(huì)說服對(duì)方。
1. 學(xué)會(huì)對(duì)客戶的溝通:要正確理解客戶的需求同時(shí)要保證相互之間的溝通順暢。
2. 對(duì)了解來的需求要能用筆正確的描述下來,并能很好的傳敘給其他人。這時(shí)要學(xué)會(huì)用如ROSE 等的軟件建模的工具。和powerdesign等的數(shù)據(jù)庫(kù)建模工具。和相關(guān)的UML,數(shù)據(jù)流程圖及相關(guān)的內(nèi)容的知識(shí)。
3. 不但要全面的了解客戶的需求而且還要對(duì)需求進(jìn)行未來的可能的改變要有相當(dāng)多的了解。
4. 全面的了解客戶的需求后,要選擇合適的相關(guān)技術(shù)用于開發(fā),:
這時(shí)要學(xué)習(xí)各種知識(shí)
a. 先擇數(shù)據(jù)庫(kù):db2,infomix ,oracle ,sql server,mysql 的優(yōu)缺點(diǎn),可以從中選擇最適合的數(shù)據(jù)庫(kù)及理由。
b. 設(shè)計(jì)數(shù)據(jù)庫(kù):要扎實(shí)在數(shù)據(jù)庫(kù)的理論(數(shù)據(jù)庫(kù)原理,數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì))及相關(guān)數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn),要盡量多的分析過去數(shù)據(jù)庫(kù)設(shè)計(jì),分析這么設(shè)計(jì)數(shù)據(jù)庫(kù)的好處。這時(shí)可能要用到 powerdesign等工具。
c. 寫需求說明文檔和概要設(shè)計(jì)文檔,同時(shí)要學(xué)會(huì)要分析相關(guān)需求說明文檔的需要的內(nèi)容的相關(guān)知識(shí),如人員工時(shí)的計(jì)算方法, 一般會(huì)用 project 來分析相關(guān)的項(xiàng)目的內(nèi)容。
d. 選擇合適的程序語(yǔ)言及相關(guān)的架構(gòu),一般主流的架構(gòu)是 J2EE和.net的相應(yīng)的優(yōu)點(diǎn)及它們之間的結(jié)合,如采用soap xml進(jìn)行相關(guān)的結(jié)合,或用java-com 橋 進(jìn)行相關(guān)的功能的調(diào)用。和它們之間的相關(guān)語(yǔ)言優(yōu)缺點(diǎn)
e. 還要根據(jù)b/s,c/s 結(jié)構(gòu)對(duì)開發(fā)的網(wǎng)絡(luò)影響的相關(guān)內(nèi)容采取
5. 學(xué)會(huì)說服對(duì)方,畢竟客戶都不是個(gè)個(gè)是軟件專家,他們的選擇有時(shí)未必是正確的所以學(xué)會(huì)說服對(duì)方,是系統(tǒng)分析員必備的能力條件.
三. 訓(xùn)練的
1. 計(jì)劃行事:
(1 設(shè)定你的未來的學(xué)習(xí)目標(biāo)
a. 未來要成為什么樣的人(主要是工作角色,如程序員,高級(jí)程序員,系統(tǒng)分析員)
b. 你近期要成為什么樣的人(當(dāng)前的工作職責(zé)是什么,如果只寫代碼是程序員等)
c. 要完成近期的工作所必須要知識(shí)(如java 程序員,要學(xué)習(xí)java 基礎(chǔ)知識(shí),等),關(guān)鍵的知識(shí)(如java中關(guān)鍵要用到的知識(shí)有,面向?qū)ο蟮龋?易錯(cuò)的知識(shí)(比較原來的已有知識(shí)進(jìn)行合對(duì))
(2 設(shè)定你的學(xué)習(xí)目標(biāo)后,并要有針對(duì)性的對(duì)應(yīng)目標(biāo)設(shè)定學(xué)習(xí)時(shí)間的按排及學(xué)習(xí)路線。并直觀的記錄在案,以便以后隨時(shí)核對(duì),
(3 常常抽出一定的時(shí)間認(rèn)真核對(duì)計(jì)劃的完成情況,如果沒有按時(shí)完成計(jì)劃的內(nèi)容。分析原因,盡量想法趕上計(jì)劃內(nèi)容如果存認(rèn)是計(jì)劃有誤,要認(rèn)真總結(jié)計(jì)劃失敗出錯(cuò)的原因,對(duì)你的未來有很大的幫助。
注意:不要對(duì)計(jì)劃的按排過于樂觀 要盡量的考慮實(shí)現(xiàn)中的各種情況,同時(shí)適當(dāng)按排一些緩沖時(shí)間,以便真正能按照計(jì)劃行事,以提高按計(jì)劃行事信心,同時(shí)這能有效避免出現(xiàn)計(jì)劃中途成沒有意義的東西。
2. 針對(duì)工作角色對(duì)自已的能力進(jìn)行培養(yǎng)和知識(shí)進(jìn)行學(xué)習(xí)。
關(guān)鍵的能力
(1. 記憶能力:要學(xué)會(huì)把自已的寫的代碼和改的代碼記的清清楚楚。要能提高效率。
(2. 邏輯思維能力:要多多的看別人的復(fù)雜邏輯的代碼,分析復(fù)雜邏輯的運(yùn)算。
(3.全局能力: 不要再范改了東,卻西出錯(cuò)。(構(gòu)造軟件這個(gè)很重要)
4.學(xué)習(xí)能力: 并不是每個(gè)項(xiàng)目都你是所熟悉的項(xiàng)目的,并不是每個(gè)項(xiàng)目中的知識(shí)你都知道,要掌握最新的技術(shù)和最有用的知識(shí),是最關(guān)鍵的。要學(xué)會(huì),提高能力,這個(gè)東西是永遠(yuǎn)對(duì)自己有好處的。
(5. 溝通能力; 學(xué)會(huì)幽默,學(xué)會(huì)講故事,學(xué)會(huì)交朋友,學(xué)會(huì)禮節(jié)
(6.自制能力:如果一個(gè)人不能自制那這個(gè)人以后,不會(huì)有很大成果,即使很大機(jī)會(huì)發(fā)展起了,可是因?yàn)闆]有自制能力很容易被人利用,或自己明明知道怎么做,可是就是不能控制自己的欲望.而常做下無法挽回在錯(cuò)誤.
四. 例:java 程序員的知識(shí)結(jié)構(gòu)及學(xué)習(xí)流程:
(一) 學(xué)習(xí)相關(guān)工作必須的知識(shí)
1.Java 語(yǔ)言的基礎(chǔ)(推薦書:《 java 編程思想》)
關(guān)鍵:
(1. java 面向?qū)ο蠹皩?duì)應(yīng)的程序現(xiàn)實(shí)
(2. java 多線
(3. java 網(wǎng)絡(luò) socket
(4. 應(yīng)用界面
2.學(xué)會(huì)用智能集成開發(fā)工具jbuilder,eclipse等一種,根據(jù)資料里的內(nèi)容,自已寫與例程類似的代碼,但注意不要直接抄它,一定要自已寫。同時(shí)最好寫到一個(gè)工程中以便對(duì)比。
3.如果用b/s結(jié)構(gòu)要學(xué)習(xí)jsp的知識(shí)(推薦書:《 JSP 2.0技術(shù)手冊(cè) 》)
關(guān)鍵:
(1. 界面處理:
a . HTML——超文本標(biāo)志語(yǔ)言:用于顯示頁(yè)面如:超文本鏈接, 表格,各種標(biāo)志等。
b. CSS———層疊樣式表:控制正文外觀的一組格式.用于美化HTML頁(yè)面。
c. javaScript—嵌入HTML頁(yè)面瀏覽器來執(zhí)行的腳本語(yǔ)言:讓頁(yè)面可以根據(jù)用戶的操作或事先設(shè)置等在客戶端進(jìn)行動(dòng)態(tài)變化,而且不需傳回服務(wù)器。比如: 對(duì)表單輸入的正確性做客戶端驗(yàn)證.
(2.jsp元素:如java代碼寫法,對(duì)應(yīng)標(biāo)志---jsp:include,jsp:useBean,jsp:setProperty,
jsp:getProperty等.jsp的幾大對(duì)
(3. javaBean及其在jsp 中的調(diào)用和相關(guān)應(yīng)用.
(4. 其他技術(shù):
a. 如何操作數(shù)據(jù)庫(kù)—用jdbc(可能要補(bǔ)充一些數(shù)據(jù)庫(kù)的知識(shí),如oracle ,sql server,
包括如何寫高效率的查詢sql,存儲(chǔ)過程等) ,
b. 如何發(fā)送email—用javaMail,
c. 如何學(xué)習(xí)如何用實(shí)現(xiàn)文件的上傳下載,如果操作文
d. 如何操作xml --用jdom 及 jaxp(這時(shí)有必要學(xué)習(xí)一下xml 的語(yǔ)法如 dtd等)
e. 如何遠(yuǎn)程方法調(diào)用—用 rm
f. 如何進(jìn)行消息服務(wù) ---用 jm
5.再有些公司會(huì)用到 J2EE 的架構(gòu)如 EJB 作為業(yè)務(wù)邏輯
(1.EJB中要分清
(2. struts MVC
(3. Hibernate 操作數(shù)據(jù)
6.最好學(xué)習(xí)一下UML
學(xué)用Rose建模
五 忠告:
1. 不要以為自已很差,要明白每個(gè)人都是這樣一步一個(gè)腳印的走過來的。(我們要有信心)
告訴自已:比爾蓋次,也是同我們一樣,出生時(shí)也是巴掌大.
我們只有多學(xué),多練才可能有出路.
2. 不要以為自已學(xué)的多就很強(qiáng),世界上的高手多的是,問問自己,你每小時(shí)可以寫幾行代碼,代碼一次寫下來有多少錯(cuò)誤,如果你一次寫下沒有錯(cuò)誤,一小時(shí)可以寫1000代碼,那才是真正的高手.
3 . 不要以為自已沒有項(xiàng)目做就會(huì)落后于他人,人家是參加了很多項(xiàng)目,可是人家只是項(xiàng)目中的一個(gè)小角色,如果我們?cè)诳諘r(shí)能都寫一些開源的項(xiàng)目,或自己開發(fā)和設(shè)計(jì)一些有用的開源的項(xiàng)目,水平及能力很快就上來了.
4. 不要以為自己做過很多的項(xiàng)目就很了不起了。你能說你做的項(xiàng)目中,你能體會(huì)整個(gè)項(xiàng)目為什么要這樣設(shè)計(jì),為什么要這樣開發(fā)嗎?相信絕大多數(shù)是否定的回答。那還不如多學(xué)習(xí)一些已做的項(xiàng)目,了解他們?yōu)槭裁匆@么做,為什么這么開發(fā),多看一下它們的項(xiàng)目的文檔,我們能明白很多,這樣把他們的經(jīng)驗(yàn)放于你未來可能要接手的項(xiàng)目,這樣不是更好嗎?
5. 不要以為自己的學(xué)習(xí)能力很牛,你能快速閱讀一本書又能快速掌握它的內(nèi)容嗎?