[TCL-EP-009]程序員開發(fā)手冊(cè).doc_第1頁
[TCL-EP-009]程序員開發(fā)手冊(cè).doc_第2頁
[TCL-EP-009]程序員開發(fā)手冊(cè).doc_第3頁
[TCL-EP-009]程序員開發(fā)手冊(cè).doc_第4頁
[TCL-EP-009]程序員開發(fā)手冊(cè).doc_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

SharePoint Coding Standard一、 編碼規(guī)范的設(shè)定規(guī)則:編程語言和開發(fā)環(huán)境所要求必須遵守的。約定:不是語言的一部分,而是一種編碼風(fēng)格,最重要的是要有統(tǒng)一的標(biāo)準(zhǔn)。 二、 編碼規(guī)范的作用1、 規(guī)范化(公司的角度)企業(yè)文化的一種需要,統(tǒng)一的風(fēng)格有助于提高公司產(chǎn)品質(zhì)量,降低開發(fā)成本,而且提高了公司凝聚力,當(dāng)所有人都接受并執(zhí)行一個(gè)統(tǒng)一的規(guī)范時(shí),也就相當(dāng)于形成了一個(gè)統(tǒng)一的文化。2、 專業(yè)化(個(gè)人的角度)提高工作效率的同時(shí),統(tǒng)一的規(guī)范會(huì)提高代碼質(zhì)量,從而提高個(gè)人的專業(yè)素養(yǎng)。 3、 高效(工作的角度)l 開發(fā):協(xié)同開發(fā)寫程序的需要,在一個(gè)開發(fā)組里,執(zhí)行統(tǒng)一規(guī)范會(huì)增加代碼融合度,減少開發(fā)中的溝通成本。程序員可以了解任何代碼,弄清程序的狀況而無需去猜測(cè)某段代碼在干什么。l 維護(hù):編碼規(guī)范使程序更易于維護(hù),無論是本人還是同事都需要,統(tǒng)一的規(guī)范可以讓每個(gè)人都能看懂別人的代碼從而進(jìn)行維護(hù)。l 減少bug:在一致的環(huán)境下,開發(fā)者可以減少出犯錯(cuò)的機(jī)會(huì)。編碼風(fēng)格最重要的兩點(diǎn)n 可讀性它是良好的編碼風(fēng)格最突出的表現(xiàn)。n 一致性它是良好的編碼風(fēng)格最重要的準(zhǔn)則。三、 編碼規(guī)范詳細(xì)設(shè)定在我們公司的使用中,以Microsoft推薦的編碼標(biāo)準(zhǔn)為基準(zhǔn),結(jié)合本公司的實(shí)際情況和通用習(xí)慣設(shè)定了如下的規(guī)范。(一) 命名規(guī)則1. 命名時(shí)的基準(zhǔn)規(guī)則l Pascal大寫所有單詞第一個(gè)字母大寫,其他字母小寫。 RestoreDocumentForSharepoint l Camel大寫除了第一個(gè)單詞,后面所有單詞第一個(gè)字母大寫,其他字母小寫。 restoreDocumentForSharepoint 2. 總體規(guī)范 l 標(biāo)識(shí)符的長(zhǎng)度應(yīng)當(dāng)符合“min-length & max-information”原則。l 名字要有意義,用描述性的詞語來命名,能通過名字知道它的功能(用于循環(huán)迭代的變量例外)。 l 避免縮寫。如果這樣造成命名過長(zhǎng)的話可以改在注釋中。但是常見的首字母縮寫可以使用。例如:SP、IE等l 名字中不要加下劃線,除非特殊情況。l 不要和關(guān)鍵字沖突。l 不要通過大小寫的不同來區(qū)分名字。Count count l 在命名中禁止出現(xiàn)以個(gè)人名字命名的一切代碼。l 禁止在代碼的任何段落中出現(xiàn)臟話及不良用語。l 縮寫詞不要全部使用大寫字母,無論如何,當(dāng)遇到以下情況,你可以用首字母大寫其余字母小寫來代替全部使用大寫字母的方法來表示縮寫詞。使用: GetHtmlStatistic.不使用: GetHTMLStatistic.3. 類的命名規(guī)范 l 用名詞或名詞短語命名類。 l 使用Pascal大寫public class FileStream l 不加任何類前綴。l 文件名和類名要匹配。對(duì)于類HelloWorld,相應(yīng)的類文件名也應(yīng)為 HelloWorld.cs。l 當(dāng)類只用作其他類的基類時(shí),以Base結(jié)尾。Class CarBase4. 接口的命名規(guī)范 l 使用名詞或名詞短語,或者描述行為的形容詞來命名接口。 l 使用Pascal大寫。ICarComponent l 在接口名前加前綴I,以表示這個(gè)類型是一個(gè)接口。(注意例如,IdentityStore。) l 一對(duì)類/接口組合名稱要相對(duì)應(yīng),兩個(gè)名稱的不同之處只是接口名前有一個(gè)I前綴。public interface IComponent public class Component : IComponent 5. 方法的命名規(guī)范 通常每個(gè)方法和函數(shù)都是執(zhí)行一個(gè)動(dòng)作的,所以對(duì)它們的命名應(yīng)該清楚的說明它們是做什么的:用CheckForErrors()代替ErrorCheck(),用DumpDataToFile()代替DataFile()。這么做也可以使功能和數(shù)據(jù)成為更可區(qū)分的物體。l 用動(dòng)詞或動(dòng)詞短語命名方法。l 使用Pascal大寫。RemoveAll()。6. 變量的命名規(guī)范 l 局部變量和方法參數(shù):使用Camel 大小寫形式。int totalCount = 0;l 成員變量:沿用VC的規(guī)范,m開頭,其后用Pascal大寫。 private int mTotalCount = 0; l 靜態(tài)變量:以s開頭,其后用Pascal大寫。static int sTotalCount;7. 常量的命名規(guī)范常量的每一個(gè)字母都應(yīng)該大寫。const int SYSTEMID = 100; const string SYSTEMNAME = “TestM”;8. 屬性的命名規(guī)范 l 用名詞或名詞短語命名。 l 用Pascal大寫命名屬性。成員變量與其屬性的差別只在于第一個(gè)字母m。 成員變量mWebName 對(duì)應(yīng)屬性WebName l 屬性與變量的類型要統(tǒng)一。 9. 命名空間的命名規(guī)范 l 用Pascal大寫命名。 l 使用有意義的名字定義命名空間,如產(chǎn)品名或者公司名 。把System系列命名空間組織到一起放上面,第三方提供的命名空間放到系統(tǒng)命名空間下面。l 為每一個(gè)命名空間創(chuàng)建一個(gè)目錄,這樣可以更容易地將命名空間映射到目錄層次劃分。用MyProject/TestSuite/TestTier作為MyProject.TestSuite.TestTier的路徑。l 我們公司的命名空間以xxx開頭,例如:xxx.Migrator(二) 格式化規(guī)范這里大部分的格式規(guī)范都可以用VS2005的自動(dòng)化格式功能實(shí)現(xiàn)。l 縮進(jìn)用TAB,不用SPACES。l 對(duì)與最大縮進(jìn)層數(shù),并沒有一個(gè)固定的規(guī)矩,假如縮進(jìn)層數(shù)大于四或者五層的時(shí)候,你可以考慮著將其代碼因數(shù)分解。l 在每個(gè)運(yùn)算符前后都空一格。l 用一個(gè)空行來分開代碼的邏輯分組。l 在一個(gè)類中,各個(gè)方法需用一空行,也只能是一空行分開。l 花括號(hào)需和括號(hào)外的代碼對(duì)齊。每個(gè)花括號(hào)需獨(dú)立一行。l If、for、while、do等語句自占一行,不論執(zhí)行語句多少都要加“”l 很長(zhǎng)的程序行應(yīng)該進(jìn)行拆分。當(dāng)一行被分為幾行時(shí),通過將串聯(lián)運(yùn)算符放在每一行的末尾而不是開頭,清楚地表示沒有后面的行是不完整的。每一行上放置的語句避免超過一條。n 在逗號(hào)后換行。n 在操作符后換行。 n 在高層換行而不要在低層處換行。n 折行后對(duì)齊上一行語句同一層的表達(dá)式起始位置。(三) 結(jié)構(gòu)設(shè)計(jì)規(guī)范1、 工程設(shè)計(jì)規(guī)范l 各個(gè)project的輸出路徑要一致,一般情況下是” .binRelease”.l 在各個(gè)工程文件里把應(yīng)用到的dll所屬的project都應(yīng)用進(jìn)來,這樣可以保證應(yīng)用不會(huì)出錯(cuò)。l 所有的目錄下都需要具有README文檔,其中包括: 該目錄的功能及其包含內(nèi)容,一個(gè)對(duì)每一文件的在線說明(帶有l(wèi)ink),每一個(gè)說明通常還應(yīng)該提取文件標(biāo)頭的一些屬性名字。 包括設(shè)置、使用說明,指導(dǎo)人民如何連接相關(guān)資源:源文件索引、在線文檔 、紙文檔、設(shè)計(jì)文檔、其他對(duì)讀者有幫助的東西??紤]一下,當(dāng)每個(gè)原有的開發(fā)人員走了,在6個(gè)月之內(nèi)來的一個(gè)新人,那個(gè)孤單的探險(xiǎn)者通過閱讀說明文件,源文件的標(biāo)頭說明等等,就應(yīng)該有能力維護(hù)整個(gè)工程。2、 文件名命名規(guī)范模塊名稱、輸出文件名稱、二進(jìn)制文件名稱應(yīng)該由部長(zhǎng)或組長(zhǎng)制定,并且需要符合公司這方面的規(guī)定。(前綴帶公司名縮寫、不要空格等)l 產(chǎn)品名稱.環(huán)境信息名稱.主功能名稱.子功能名稱.子功能名稱.exe,例如:xxx.yy.Backup.Browser.exe/dll/wsp,不允許使用下劃線,空格等。單詞首字母大寫。l 避免出現(xiàn) AaBbBb這樣的命名方式。3、 類文件編寫規(guī)范l 避免在同一個(gè)文件中放置多個(gè)類。l 避免使用大文件。如果一個(gè)文件里的代碼超過1000行,必須考慮將代碼分開到不同類中,并且要有效的利用好region。l 在最靠近一個(gè)局部變量被使用的地方聲明該局部變量。l 在定義變量(或參數(shù))時(shí),要將修飾符 * 和 緊靠變量名。l 重要類結(jié)構(gòu)的public, protected, private順序在所有的程序中應(yīng)保持一致。l 程序中不要出現(xiàn)名字相同的局部變量和成員變量。l 代碼文件保存需要保存成utf-8格式。在保存新文件時(shí)選擇File-Advanced Saved Options,再選擇Unicode(UTF-8).4、 方法編寫規(guī)范l 避免寫太長(zhǎng)的方法。如果一個(gè)方法代碼超過行,應(yīng)該考慮按不同操作將其分解為不同的方法,這樣各個(gè)功能可以很容易被重用,而且各個(gè)方法內(nèi)的代碼改變也很容易理解。上限為200行。 l 一個(gè)方法只完成一個(gè)任務(wù)。不要把多個(gè)任務(wù)組合到一個(gè)方法中,即使那些任務(wù)非常小。 l 避免寫超過5個(gè)參數(shù)的方法。如果要傳遞多個(gè)參數(shù),要使用結(jié)構(gòu)來完成。 l 避免使用很多成員變量。應(yīng)該聲明局部變量,并傳遞給方法。不要在方法間共享成員變量。否則很難知道是哪個(gè)方法在什么時(shí)候修改了它的值。l 參數(shù)命名、順序合理。l 如果使用類型和數(shù)目不確定的參數(shù),需要特殊注意并在注釋中寫明白其用途。l 不要省略了函數(shù)返回值的類型。l 函數(shù)名字與返回值類型在語義上不要沖突。l 不要將正常值和錯(cuò)誤標(biāo)志混在一起返回,正常值應(yīng)當(dāng)用輸出參數(shù)獲得,而錯(cuò)誤標(biāo)志用return語句返回。l 重要的一行代碼應(yīng)該只做一件事,如只定義一個(gè)變量,只寫一條語句。l 如果代碼行中的運(yùn)算符比較多,要用括號(hào)清楚地確定表達(dá)式的操作順序。l 不要編寫太復(fù)雜或者多用途的復(fù)合表達(dá)式,復(fù)雜的表達(dá)式不能表明設(shè)計(jì)者技術(shù)更好,只會(huì)帶來維護(hù)上的困難。5、 常量l 使用含義直觀的常量來表示那些將在程序中多次出現(xiàn)的數(shù)字或字符串。l 如果某一常量與其它常量密切相關(guān),要定義中包含了這種關(guān)系。6、 變量l 變量的初始化或缺省值要準(zhǔn)確,應(yīng)該在任何情況下都不引起錯(cuò)誤。l 變量使用時(shí)注意上溢或下溢。l 變量使用時(shí)注意精度。l 對(duì)一個(gè)數(shù)值變量采用的不是0,-1,1等常用的數(shù)值初始化時(shí),給出選擇該值的理由。l 別把成員變量聲明為public或protected。一般聲明為 private 而使用 public/protected 的Properties。7、 數(shù)據(jù)類型l 變量的數(shù)據(jù)類型應(yīng)該符合其定義。l 減少并謹(jǐn)慎使用不同數(shù)據(jù)類型的之間的賦值,避免精度損失或者賦值后類型錯(cuò)誤。l 不要進(jìn)行不同數(shù)據(jù)類型的比較,除非特殊情況。l 盡量使用C# 特有類型,而不是System命名空間中定義的別名類型。好: int age; string name; object contactInfo;不好: Int16 age; String name; Object contactInfo;8、 邏輯判斷l(xiāng) 要注意精度原因?qū)е卤容^無效問題。l 要注意表達(dá)式中的優(yōu)先級(jí)是否正確。l 邏輯判斷結(jié)果要符合常規(guī),不要顛倒。l 字符串比較時(shí)要注意大小寫,如果不大小寫敏感的時(shí)要使用, Name.Equals(excludeItem.Name, StringComparison.OrdinalIgnoreCase)l 不要用隱含錯(cuò)誤的方式寫if語句? 例如:(1)將布爾變量直接與TRUE、FALSE或者1、0進(jìn)行比較。(2)將浮點(diǎn)變量用“=”或“!=”與任何數(shù)字比較。(3)將指針變量用“=”或“!=”與NULL比較。l 總是將恒量放在等號(hào)/不等號(hào)的左邊,例如: if ( 6 = $errorNum ) . 一個(gè)原因是假如你在等式中漏了一個(gè)等號(hào),語法檢查器會(huì)為你報(bào)錯(cuò)。第二個(gè)原因是你能立刻找到數(shù)值,而不是在你的表達(dá)式的末端找到它。需要一點(diǎn)時(shí)間來習(xí)慣這個(gè)格式,但是它確實(shí)很有用。9、 循環(huán)問題l 如果循環(huán)體內(nèi)存在邏輯判斷,并且循環(huán)次數(shù)很大,要將邏輯判斷移到循環(huán)體的外面。l 要注意循環(huán)終止條件是否正確l 謹(jǐn)慎使用無法正常終止(死循環(huán))的循環(huán)。l 在循環(huán)里不要錯(cuò)誤地修改循環(huán)變量。l 要注意誤差累積對(duì)結(jié)果的影響。l Case語句的結(jié)尾要加break。l 寫switch時(shí)要加default分支。default case總應(yīng)該存在,它應(yīng)該不被到達(dá),然而如果到達(dá)了就會(huì)觸發(fā)一個(gè)錯(cuò)誤。 l Switch中如果你要?jiǎng)?chuàng)立一個(gè)變量,那就把所有的代碼放在塊中。Case 0:int i = 0;l Continue 和 break 其實(shí)是變相的隱蔽的 goto方法,要謹(jǐn)慎使用。10、 Mutex的管理1) 在使用前充分認(rèn)識(shí)Mutex,例如:A. Mutex應(yīng)該在 finally里釋放 (否則異常情況會(huì)導(dǎo)致Mutex釋放操作被跳過)B. 注意釋放Mutex有時(shí)會(huì)引起異常。C. 請(qǐng)確認(rèn)Mutex在線程或者進(jìn)程結(jié)束前被釋放。(在正常流程中,應(yīng)該避免殺死線程和進(jìn)程操作,這樣操作可能會(huì)導(dǎo)致釋放操作被忽略)D. /en-us/library/system.threading.mutex.aspx2) 使用Mutex前看是否必須,Mutex應(yīng)該被用于多進(jìn)程中同步,如果僅僅是同步一個(gè)進(jìn)程中的線程,可以用lock代替。3) 如果必須使用Mutex,請(qǐng)確認(rèn)是否恰當(dāng)?shù)目刂坪昧讼嚓P(guān)code。4) 通常情況下,應(yīng)該在短操作中使用同步對(duì)象(Mutex,lock)(在一個(gè)沒有復(fù)雜操作的方法中 )11、 其他規(guī)范l 總是使用接口。避免只有一個(gè)成員的接口,努力保證一個(gè)接口有35個(gè)成員。當(dāng)使用抽象類的時(shí)候,提供一個(gè)接口。 (四) 內(nèi)存管理l SQL對(duì)象使用結(jié)束后一定要關(guān)閉:(例) Reader.Close(); l 一些對(duì)象是否在list中保持應(yīng)用,而實(shí)際上不再使用也要及時(shí)釋放。l 申請(qǐng)大內(nèi)存對(duì)象后,使用完畢要釋放,如果頻繁使用,可以考慮重用。(五) 異常處理l 加trycatch時(shí)注意,一定要在catch里加處理的語句,千萬不要catch里啥也不做,那樣的效果還不如不加trycatch了。如果你能確認(rèn)在catch里不需要輸出,那就加個(gè)注釋,說明這里不需要輸出。try sr.Close();catch/ Does not require outputl 處理異常的基本邏輯是:對(duì)于嚴(yán)重問題(備份或者創(chuàng)建site失敗、連接數(shù)據(jù)庫失敗等),應(yīng)該在捕獲異常后結(jié)束job,注意輸出錯(cuò)誤信息。對(duì)于非嚴(yán)重問題(備份還原單項(xiàng)目失敗、還原某個(gè)屬性失敗等),可以在捕獲異常后輸出錯(cuò)誤信息,然后繼續(xù)向下執(zhí)行。l 捕獲異常后,重新寫自己的異常,這個(gè)時(shí)候一定要把原先的異常信息包括到新異常里。l 在異常中包含一些非常重要的信息。舉一個(gè)例子,我們的代碼經(jīng)常要判斷是否有足夠的磁盤空間。當(dāng)磁盤空間不足是,我們只輸出磁盤空間不足,并沒有寫哪個(gè)地方的磁盤空間不足,現(xiàn)在多少空間,我們需要多少空間,等等。例子:long (realSize expectedSize) throw new Exception(Not enough disk space);比較好的代碼是把這些信息都輸出:long (realSize expectedSize) throw new Exception(Not enough disk space. Location:0, realSize:1, expectedSize:2, location, realSize, expectedSize); l 只輸出異常的message,沒有把堆棧信息輸出。這樣只知道是什么錯(cuò)誤,并不知道哪行代碼拋出錯(cuò)誤,具體是什么異常信息。例子: try Do something. catch (Exception e) mLog.Error(Browse tree error:0, e.Message); 如果可能,我們應(yīng)該把堆棧信息也一起輸出,只要用ToString()方法代替Message屬性就可以了: try Do something. catch (Exception e) mLog.Error(Browse tree error:0, e.ToString();l 關(guān)鍵的地方,不要忘記進(jìn)行錯(cuò)誤處理,例如線程處理方法等。l 要注意錯(cuò)誤處理程序塊是否能執(zhí)行到。l 錯(cuò)誤處理程序塊本身不要錯(cuò)誤,如報(bào)告的錯(cuò)誤與實(shí)際錯(cuò)誤不一致,處理方式不正確等等。Catch塊里不要出現(xiàn)新的異常,否則很容易導(dǎo)致程序不正常結(jié)束。(六) 文件I/O問題:l 讀寫文件時(shí)要注意文件讀寫成功和失敗的異常處理。除非你的操作不重要,而且出錯(cuò)能容過去,否則加上trycatch來處理IO異常是比較好的方式。l 不要對(duì)不存在的或者錯(cuò)誤的文件進(jìn)行操作,操作前應(yīng)該檢查文件是否可用。l 打開文件要使用正確的方式。l 要注意對(duì)于文件結(jié)束的判斷。l 使用完畢后要正確地關(guān)閉文件。l 在使用File.Create(outReportFilePath);時(shí)注意,如果后邊直接StreamReader outReport = new StreamReader(outReportFilePath);讀這個(gè)文件,有很大可能會(huì)報(bào)錯(cuò)誤文件被占用,也就是說這種方法創(chuàng)建的文件,釋放不及時(shí),使用的時(shí)候請(qǐng)注意。最好用File對(duì)象創(chuàng)建并主動(dòng)釋放資源。l 除非必須,否則永遠(yuǎn)不要向固定盤符的目錄寫文件,如果需要寫臨時(shí)文件,可以使用安裝目錄中的temp文件夾。(七) 高級(jí)特性l 重載函數(shù)不要有二義性。l 不要混淆了成員函數(shù)的重載、覆蓋與隱藏。l 運(yùn)算符的重載要符合制定的編程規(guī)范。(八) 注釋和日志 l 注釋需和代碼對(duì)齊。只在必需的地方注釋。行數(shù)不多的注釋會(huì)使代碼看起來優(yōu)雅。(前提是你的代碼命名有意義并且邏輯結(jié)構(gòu)清晰) l 如果因?yàn)槟撤N原因使用了復(fù)雜晦澀的原理,應(yīng)該為程序配備良好的文檔和充分的注釋。(養(yǎng)成寫開發(fā)文檔的習(xí)慣) l 寫注釋時(shí)注意不要有錯(cuò)誤或者可能導(dǎo)致誤解的地方,盡量寫清晰易懂的注釋。l 一定要讓你的應(yīng)用程序支持跟蹤和日志。l 修改代碼后在更改處加上注釋l 在提交代碼時(shí),SVN的注釋也要填寫這次提交所涉及的功能信息。l Log里提示的錯(cuò)誤信息應(yīng)該包含更多有用的信息,例如連接服務(wù)器失敗這樣的錯(cuò)誤,應(yīng)該在log里把連接的目標(biāo)IP和Port都打出來。l Log level的設(shè)定:Info 程序執(zhí)行的主要步驟,例如程序開始、結(jié)束等,由于這個(gè)level的log是默認(rèn)情況下顯示的,應(yīng)該盡量少一些,不然做個(gè)job,日志就由于info信息太多沖掉了更有用的信息。Debug 程序執(zhí)行的詳細(xì)步驟,包括一些診斷信息等,盡量詳細(xì),主要用來診斷問題。Warning 當(dāng)發(fā)生異常時(shí),如果這個(gè)異常不影響程序 繼續(xù)執(zhí)行,可以把這個(gè)異常信息輸出為Warn,例如:還原一個(gè)文件失敗的錯(cuò)誤;如果是可以預(yù)知并能容過去的錯(cuò)誤,也可以不用Warning而選擇Debug,例如:輸出普通信息的文件不存在但是可以創(chuàng)建的log就可以是Debug的。Error 當(dāng)發(fā)生異常時(shí),程序由于這個(gè)異常導(dǎo)致不能繼續(xù)工作,則應(yīng)該用這個(gè)標(biāo)志。四、 編碼中要注意的問題1、 同產(chǎn)品軟件(項(xiàng)目組)內(nèi),最好使用相同的編輯器,并使用相同的設(shè)置選項(xiàng)。并設(shè)計(jì)、使用一套縮進(jìn)宏及注釋宏等,將縮進(jìn)等問題交由編輯器處理。2、 謹(jǐn)慎使用塊拷貝功能,當(dāng)某段代碼與另一段代碼的處理功能相似時(shí),許多開發(fā)人員都用編輯器提供的塊拷貝功能來完成這段代碼的編寫。由于程序功能相近,故所使用的變量、采用的表達(dá)式等在功能及命名上可能都很相近,所以使用塊拷貝時(shí)要注意,除了修改相應(yīng)的程序外,一定要把使用的每個(gè)變量仔細(xì)查看一遍,以改成正確的。不應(yīng)指望編譯器能查出所有這種錯(cuò)誤,比如當(dāng)使用的是全局變量時(shí),就有可能使某種錯(cuò)誤隱藏下來。3、 在修改branch(主要是客戶問題等情況)時(shí),不要修改公共接口,否則可能會(huì)導(dǎo)致其他功能不好使;如果必須修改,可以使用方法重載等方式來做。4、 避免 string name=”; 正確 string name=String.Empty;(空間問題)5、 必要時(shí)使用枚舉類型enum,別用數(shù)字或字符串來指示離散值。enum MailType Html, PlainText,Attachment 使用各個(gè)離散指時(shí)采用MailType.Html的形式,而不是逐個(gè)的“Html”。避免為枚舉指定一個(gè)類型。6、 進(jìn)程或者線程應(yīng)該通過判斷退出條件來進(jìn)行安全結(jié)束,只有我們確認(rèn)它肯定不能工作了(不能自己結(jié)束)才能強(qiáng)制的殺死線程或者進(jìn)程. 否則,這種操作會(huì)造成某些資源不能回收以及出現(xiàn)臟數(shù)據(jù)。Process or thread should check exit condition and quit peacefully. Do not forcefully kill a thread or process, unless we know its stuck. Otherwise, it may cause cleanup be skipped and may also cause data corruption7、 除了要在switch語句塊中實(shí)現(xiàn)代碼跳轉(zhuǎn),不要使用goto關(guān)鍵字。五、 能提高程序效率的方法1、 StringBuilder代替String定義字符串,尤其是在多次修改string的時(shí)候,StringBuilder的效率會(huì)有驚人的提高。(可以通過通過設(shè)置時(shí)間點(diǎn)來分析程序的效率)2、 合理利用排序,提高程序效率。很多查找操作排序后會(huì)比排序前快許多倍。3、 在已知類型的情況下,盡量避免強(qiáng)制類型轉(zhuǎn)換封箱拆箱操作,減少對(duì)資源的損耗。4、 對(duì)數(shù)據(jù)庫操作時(shí)需要什么字段操作什么字段,不要操作多余的字段。5、 沒有用的被注釋掉的代碼要及時(shí)刪除,以免讓后來人產(chǎn)生歧義。六、 代碼重用??绻こ痰闹赜迷跊]有一個(gè)通用結(jié)構(gòu)的情況下幾乎是不可能的。不同的工程有著不同的服務(wù)需求環(huán)境,這使對(duì)象重用變得很困難。 以下幾種辦法推薦使用來幫助開發(fā)者進(jìn)行代碼重用 :1、請(qǐng)教!給team發(fā)Email求助這個(gè)簡(jiǎn)單的方法很少被使用。因?yàn)橛行┏绦騿T們覺得如果他向其他人求助,會(huì)顯得自己水平低,這多傻啊! 做新的有趣的工作,不要一遍又一遍的做別人已經(jīng)做過的東西。如果你需要某些事項(xiàng)的源代碼,如果已經(jīng)有某人做過的話,就向群組發(fā)email求助。結(jié)果會(huì)很驚喜哦!在許多大的開發(fā)團(tuán)隊(duì)中,個(gè)人往往不知道其他人在干什么。你甚至可以發(fā)現(xiàn)某人在找一些東西做,并且自愿為你寫代碼,如果人們?cè)谝黄鸸ぷ?,外面就總有一個(gè)金礦。 2、告訴!當(dāng)你在做事的時(shí)候,把它告訴所有人 如果你做了什么可重用的東西的話,讓其他人知道。別害羞,也不要為了保護(hù)自豪感而把你的工作成果藏起來。一旦養(yǎng)成共享工作成果的習(xí)慣,每個(gè)人都會(huì)獲得更多。 對(duì)于代碼重用,一個(gè)常見的問題就是人們不從他們做過的代碼中做庫。一個(gè)可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論