R語言編碼規則_第1頁
R語言編碼規則_第2頁
R語言編碼規則_第3頁
R語言編碼規則_第4頁
R語言編碼規則_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、R 語言是一門主要用于統計計算和繪圖的高級編程語言.這份 R 語言編碼風格指南旨在讓我們的 R代碼更容易閱讀、分享和檢查.以下規則系與 Google 的 R 用戶群體協同設計而成.概要:R 編碼風格約定1 .文件命名:以.R(大寫)結尾2 .標識符命名:,FunctionName,kConstantName3 .單行長度:不超過 80 個字符4 .縮進:兩個空格,不使用制表符 5.6 .花括號:前括號不折行寫,后括號獨占一行7 .賦值符號:使用-,而非=8 .登士:不要用9 .總體布局和順序10 .注釋準則:所有注釋以#開始,后接一個空格;行內注釋需要在#前加兩個空格

2、11 .函數的定義和調用12 .函數文檔13 .示例函數14 .TODO 書寫風格:TODO 您的用戶名)概要:R 語言使用規則1 .attach:避免使用2 .函數:錯誤(error)應當使用 stop()拋出3 .對象和方法:盡可能避免使用 S4 對象和方法;永遠不要混用 S3 和 S4表木和命名文件命名文件名應以.R 伏寫)結尾,文件名本身要有意義.正例:predict_ad_revenue.R反例:foo.R標識符命名在標識符中不要使用下劃線(_)或連字符(-).標識符應根據如下慣例命名.變量名應使用點(.)分隔所有的小寫字母或單詞;函數名首字母大寫,不用點分隔(所含單詞首字母大寫);

3、常數命名規則同函數,但需使用一個 k 開頭.正例:avg.clicks反例:avg_Clicks,avgClicksFunctionName正例:CalculateAvgClicks反例:calculate_avg_clicks,calculateAvgClicks函數命名應為動詞或動詞性短語.例外:當創建一個含類(class)屬性的對象時,函數名(也是 constructor)和類名(class)應當匹配(例如,lm).kConstantName語法單行長度最大單行長度為 80 個字符.縮進使用兩個空格來縮進代碼.永遠不要使用制表符或混合使用二者例外:當括號內發生折

4、行時,所折行與括號內的第一個字符對齊空白在所有二元操作符(=,+,-,-,等等)的兩側加上空格.例外:在函數調用中傳遞參數時=兩邊的空格可加可不加不可在逗號前加空格,逗號后總須加空格.正例:tabPrior-table(dfdf$daysFromOpt0,campaignid)total-sum(x,1)total-sum(x1,)反例:tabPrior-table(dfdf$daysFromOpt0,campaignid)tabPrior-table(dfdf$daysFromOpt0,campaignid)tabPrior-table(dfdf$daysFromOpt0,campaigni

5、d)tabPrior-table(dfdf$daysFromOpt0,campaignid)total-sum(x,1)#Needsaspaceafterthecommatotal-sum(x,1)#Needsaspaceafterthecomma,notbefore在前括號前加一個空格,函數調用時除外.正例:if(debug)反例:if(debug)多加空格(即,在行內使用多于一個空格)也是可以的,如果這樣做能夠改善等號或箭頭(-)的對齊效果.plot(x=xCoord,y=dataMat,makeColName(metric,ptiles1,roiOpt),ylim=ylim,xlab=d

6、ates,ylab=metric,main=(paste(metric,for3samples,sep=)不要向圓括號或方括號中的代碼兩側加入空格例外:逗號后總 7 加空格.正例:if(debug)x1,反例:if(debug)#debug 的兩邊不要加空格#Needsspacesaround# Needsaspaceafterthecomma# Needsaspacebefore-#Needsspacesaround-x1,#需要在逗號后加一個空格花括號前括號永遠不應該獨占一行;后括號應當總是獨占一行.您可以在代碼塊只含單個語句時省略花括號;但在處理這類單個語句時,您必須前后一致地要么全部使

7、用花括號,或者全部不用花括號.if(is.null(ylim)ylim-c(0,0.06)或(不可?!用)if(is.null(ylim)ylim-c(0,0.06)總在新起的一行開始書寫代碼塊的主體.反例:if(is.null(ylim)ylim-c(0,0.06)if(is.null(ylim)ylim-c(0,0.06)賦值使用-進行賦值,不用=賦值.正例:x-5反例:x=5分號不要以分號結束一行,也不要利用分號在同一彳 T 放多于一個命令.(分號是毫無必要的,并且為了與其他 Google 編碼風格指南保持一致,此處同樣略去.)代碼組織總體布局和順序如果所有人都以相同順序安排代碼內容,我

8、們就可以更加輕松快速地閱讀并理解他人的腳本了.1 .版權聲明注釋2 .作者信息注釋3 .文件描述注釋,包括程序的用途,輸入和輸出4 .source()和 library。語句5 .函數定義6 .要執行白語句,如果有的話(例如,print,plot)單元測試應在另一個名為原始的文件名_unittest.R 的獨立文件中進行.注釋準則注釋您的代碼.整行注釋應以#后接一個空格開始.行內短注釋應在代碼后接兩個空格,#,再接一個空格#Createhistogramoffrequencyofcampaignsbypctbudgetspent.hist(df$pctSpent,breaks=scott,#m

9、ethodforchoosingnumberofbucketsmain=Histogram:fractionbudgetspentbycampaignid,xlab=Fractionofbudgetspent,ylab=Frequency(countofcampaignids)函數的定義和調用函數定義應首先列出無默認值的參數,然后再列出有默認值的參數.函數定義和函數調用中,允許每行寫多個參數;折行只允許在賦彳 1 語句外進行.正例:PredictCTR-function(query,property,numDays,showPlot=TRUE)反例:PredictCTR-function(qu

10、ery,property,numDays,showPlot=TRUE)理想情況下,單元測試應該充當函數調用的樣例(對于包中的程序來說).函數文檔函數在定義行下方都應當緊接一個注釋區.這些注釋應當由如下內容組成:此函數的一句話描述此函數的參數列表,用 Args:表示,對每個參數的描述(包括數據類型);以及對于返回值的描述以 Returns:表示.這些注釋應當描述得足夠充分,這樣調用者無須閱讀函數中的任何代碼即可使用此函數.示例函數CalculateSampleCovariance-function(x,y,verbose=TRUE)#Computesthesamplecovariancebetw

11、eentwovectors.#Args:#x:Oneoftwovectorswhosesamplecovarianceistobecalculated.#y:Theothervector.xandymusthavethesamelength,greaterthanone,#withnomissingvalues.#verbose:IfTRUE,printssamplecovariance;ifnot,not.DefaultisTRUE.#Returns:#Thesamplecovariancebetweenxandy.n-length(x)#Errorhandlingif(n=1|n!=len

12、gth(y)stop(Argumentsxandyhaveinvalidlengths:,length(x),and,length(y),.)if(TRUE%in%is.na(x)|TRUE%in%is.na(y)stop(Argumentsxandymustnothavemissingvalues.)covariance-var(x,y)if(verbose)cat(Covariance=,round(covariance,4),.n,sep=)return(covariance)TODO 書寫風格編碼時通篇使用一種一致的風格來書寫 TODO.TODO 您的用戶名):所要采取行動的明確描述語

13、日Attach使用 attach 造成錯誤的可能數不勝數.避免使用它.函數錯誤(error)應當使用 stop()拋出.對象和方法S語言中有兩套面向對象系統,S3和 S4,在 R中這兩套均可使用.S3方法的可交互性更強,更加靈活,反之,S4方法更加正式和嚴格.(對這兩套系統的說明,參見 ThomasLumley 的文章ProgrammersNiche:ASimpleClass,inS3andS4,發表于 RNews4/1,2004,33-36 頁:http:/doc/Rnews/Rnews2004-1.pdf.)這里推薦使用 S3 對象和方法,除非您有很強烈

14、的理由去使用 S4 對象和方法.使用 S4 對象的一個主要理由是在 C+代碼中直接使用對象.使用一個 S4 泛型/方法的主要理由是對雙參數的分發.避免混用 S3 和 S4:S4 方法會忽略 S3 中的繼承,反之亦然.例外除非有不去這樣做的好理由,否則應當遵循以上描述的編碼慣例.例外包括遺留代碼的維護和對第三方代碼的修改.結語遵守常識,前后一致.如果您在編輯現有代碼,花幾分鐘看看代碼的上下文并弄清它的風格.如果其他人在 if 語句周圍使用了空格,那您也應該這樣做.如果他們的注釋是用星號組成的小盒子圍起來的,那您也要這樣寫。遵循編碼風格準則的意義在于,人們相當于有了一個編程的通用詞匯表,于是人們可以專注于您在說什么,而不是您是怎么說的.我們在這里提供全局的編碼風格規則以便人

溫馨提示

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

評論

0/150

提交評論