來自 Google 的 R 語言編碼風(fēng)格指南_第1頁
來自 Google 的 R 語言編碼風(fēng)格指南_第2頁
來自 Google 的 R 語言編碼風(fēng)格指南_第3頁
來自 Google 的 R 語言編碼風(fēng)格指南_第4頁
來自 Google 的 R 語言編碼風(fēng)格指南_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、來自 Google 的 R 語言編碼風(fēng)格指南R 語言是一門主要用于統(tǒng)計計算和繪圖的高級編程語言 . 這份 R 語言編碼風(fēng)格指南 旨在讓我們的 R 代碼更容易閱讀、分享和檢查 . 以下規(guī)則系與 Google 的 R 用戶群 體協(xié)同設(shè)計而成 .概要 : R 編碼風(fēng)格約定文件命名 : 以 . R (大寫 結(jié)尾標(biāo)識符命名 : v a r i a b l e . n a m e , F u n c t i o n N a m e , k C o n s t a n t N a m e單行長度 : 不超過 80 個字符縮進 : 兩個空格 , 不使用制表符空白花括號 : 前括號不折行寫 , 后括號獨占一行賦

2、值符號 : 使用 <-, 而非 =分號 : 不要用總體布局和順序注釋準(zhǔn)則 : 所有注釋以 #開始 , 后接一個空格 ; 行內(nèi)注釋需要在 #前加兩個空 格函數(shù)的定義和調(diào)用函數(shù)文檔示例函數(shù)TODO 書寫風(fēng)格 : T O D O (您的用戶名 概要 : R 語言使用規(guī)則a t t a c h : 避免使用函數(shù) : 錯誤 (error 應(yīng)當(dāng)使用 s t o p ( 拋出對象和方法 : 盡可能避免使用 S4 對象和方法 ; 永遠不要混用 S3 和 S41. 表示和命名文件名應(yīng)以 . R (大寫 結(jié)尾 , 文件名本身要有意義 .正例 : p r e d i c t _a d _r e v e n u

3、 e . R反例 : f o o . R標(biāo)識符命名在標(biāo)識符中不要使用下劃線 ( _ 或連字符 ( - . 標(biāo)識符應(yīng)根據(jù)如下慣例命名 .變量名應(yīng)使用點 (. 分隔所有的小寫字母或單詞 ; 函數(shù)名首字母大寫 , 不用點分隔 (所含單詞首字母大寫 ; 常數(shù)命名規(guī)則同函數(shù) , 但需使用一個 k 開頭 .v a r i a b l e . n a m e正例 : a v g . c l i c k s反例 : a v g _C l i c k s , a v g C l i c k sF u n c t i o n N a m e正例 : C a l c u l a t e A v g C l i c

4、k s反例 : c a l c u l a t e _a v g _c l i c k s , c a l c u l a t e A v g C l i c k s函數(shù)命名應(yīng)為動詞或動詞性短語 .例外 : 當(dāng)創(chuàng)建一個含類 (class 屬性的對象時 , 函數(shù)名 (也是 constructor 和類名 (class 應(yīng)當(dāng)匹配 (例如 , lm.k C o n s t a n t N a m e最大單行長度為 80 個字符 .使用兩個空格來縮進代碼 . 永遠不要使用制表符或混合使用二者 .例外 : 當(dāng)括號內(nèi)發(fā)生折行時 , 所折行與括號內(nèi)的第一個字符對齊 .在所有二元操作符 (=, +, -, &

5、lt;-, 等等 的兩側(cè)加上空格 .例外 : 在函數(shù)調(diào)用中傳遞參數(shù)時 =兩邊的空格可加可不加 .不可在逗號前加空格 , 逗號后總須加空格 .正例 :t a b P r i o r <-t a b l e (d f d f $d a y s F r o m O p t <0, " c a m p a i g n i d " t o t a l <-s u m (x , 1t o t a l <-s u m (x 1, t a b P r i o r <-t a b l e (d f d f $d a y s F r o m O p t <0

6、, " c a m p a i g n i d " #在 ' <' 兩側(cè)需要增加空格 t a b P r i o r <-t a b l e (d f d f $d a y s F r o m O p t <0, " c a m p a i g n i d " #逗號后需要一個空格 t a b P r i o r <-t a b l e (d f d f $d a y s F r o m O p t <0, " c a m p a i g n i d " #在 <-前需要一個空格 t

7、 a b P r i o r <-t a b l e (d f d f $d a y s F r o m O p t <0, " c a m p a i g n i d " #在 <-兩側(cè)需要增加空格 t o t a l <-s u m (x , 1 #逗號后需要一個空格t o t a l <-s u m (x , 1 #逗號后需要一個空格 , 而非逗號之前在前括號前加一個空格 , 函數(shù)調(diào)用時除外 .正例 :i f (d e b u g 反例 :i f (d e b u g 多加空格 (即 , 在行內(nèi)使用多于一個空格 也是可以的 , 如果這樣做

8、能夠改善 等號或箭頭 (<- 的對齊效果 .p l o t (x =x C o o r d ,y =d a t a M a t , m a k e C o l N a m e (m e t r i c , p t i l e s 1, " r o i O p t " , y l i m =y l i m ,x l a b =" d a t e s " ,y l a b =m e t r i c ,m a i n =(p a s t e (m e t r i c , " f o r 3s a m p l e s " , s e p

9、 =" " 不要向圓括號或方括號中的代碼兩側(cè)加入空格 .例外 : 逗號后總須加空格 .i f (d e b u g x 1, i f (d e b u g #d e b u g 的兩邊不要加空格x 1, #需要在逗號后加一個空格前括號永遠不應(yīng)該獨占一行 ; 后括號應(yīng)當(dāng)總是獨占一行 . 您可以在代碼塊只 含單個語句時省略花括號 ; 但在處理這類單個語句時 , 您必須 前后一致地 要 么全部使用花括號 , 或者全部不用花括號 .i f (i s . n u l l (y l i m y l i m <-c (0, 0. 06或 (不可混用 i f (i s . n u l

10、 l (y l i m y l i m <-c (0, 0. 06總在新起的一行開始書寫代碼塊的主體 .反例 :i f (i s . n u l l (y l i m y l i m <-c (0, 0. 06i f (i s . n u l l (y l i m y l i m <-c (0, 0. 06 使用 <-進行賦值 , 不用 =賦值 .正例 :x <-5反例 :x =5不要以分號結(jié)束一行 , 也不要利用分號在同一行放多于一個命令 . (分號是毫 無必要的 , 并且為了與其他 Google 編碼風(fēng)格指南保持一致 , 此處同樣略去 .總體布局和順序如果所有

11、人都以相同順序安排代碼內(nèi)容 , 我們就可以更加輕松快速地閱讀并 理解他人的腳本了 .版權(quán)聲明注釋作者信息注釋文件描述注釋 , 包括程序的用途 , 輸入和輸出s o u r c e ( 和 l i b r a r y ( 語句要執(zhí)行的語句 , 如果有的話 (例如 , p r i n t , p l o t 單元測試應(yīng)在另一個名為 原始的文件名 _u n i t t e s t . R 的獨立文件中進行 .注釋您的代碼 . 整行注釋應(yīng)以 # 后接一個空格開始 .行內(nèi)短注釋應(yīng)在代碼后接兩個空格 , #, 再接一個空格 .#C r e a t e h i s t o g r a m o f f r e

12、 q u e n c y o f c a m p a i g n s b y p c t b u d g e t s p e n t . h i s t (d f $p c t S p e n t ,b r e a k s =" s c o t t " , #m e t h o d f o r c h o o s i n g n u m b e r o f b u c k e t s m a i n =" H i s t o g r a m :f r a c t i o n b u d g e t s p e n t b y c a m p a i g n i d

13、 " , x l a b =" F r a c t i o n o f b u d g e t s p e n t " ,y l a b =" F r e q u e n c y (c o u n t o f c a m p a i g n i d s " 函數(shù)的定義和調(diào)用函數(shù)定義應(yīng)首先列出無默認值的參數(shù) , 然后再列出有默認值的參數(shù) .函數(shù)定義和函數(shù)調(diào)用中 , 允許每行寫多個參數(shù) ; 折行只允許在賦值語句外進行 .正例 :P r e d i c t C T R <-f u n c t i o n (q u e r y , p r o p

14、 e r t y , n u m D a y s ,s h o w P l o t =T R U E 反例 :P r e d i c t C T R <-f u n c t i o n (q u e r y , p r o p e r t y , n u m D a y s , s h o w P l o t =T R U E 理想情況下 , 單元測試應(yīng)該充當(dāng)函數(shù)調(diào)用的樣例 (對于包中的程序來說 .函數(shù)在定義行下方都應(yīng)當(dāng)緊接一個注釋區(qū) . 這些注釋應(yīng)當(dāng)由如下內(nèi)容組成 :此函數(shù)的一句話描述 ; 此函數(shù)的參數(shù)列表 , 用 A r g s :表示 , 對每個參數(shù)的描述(包括數(shù)據(jù)類型 ; 以及對

15、于返回值的描述 , 以 R e t u r n s :表示 . 這些注釋應(yīng)當(dāng)描述得足夠充分 , 這樣調(diào)用者無須閱讀函數(shù)中的任何代碼即可使用此函數(shù) .C a l c u l a t e S a m p l e C o v a r i a n c e <-f u n c t i o n (x , y , v e r b o s e =T R U E #C o m p u t e s t h e s a m p l e c o v a r i a n c e b e t w e e n t w o v e c t o r s .#A r g s :#x :O n e o f t w o v e

16、 c t o r s w h o s e s a m p l e c o v a r i a n c e i s t o b e c a l c u l a t e d .#y :T h e o t h e r v e c t o r . x a n d y m u s t h a v e t h e s a m e l e n g t h , g r e a t e r t h a n o n e , #w i t h n o m i s s i n g v a l u e s .#v e r b o s e :I f T R U E , p r i n t s s a m p l e c

17、o v a r i a n c e ; i f n o t , n o t . D e f a u l t i s T R U E . #R e t u r n s :#T h e s a m p l e c o v a r i a n c e b e t w e e n x a n d y .n <-l e n g t h (x #E r r o r h a n d l i n gi f (n <=1|n ! =l e n g t h (y s t o p (" A r g u m e n t s x a n d y h a v e i n v a l i d l e

18、n g t h s :" ,l e n g t h (x , " a n d " , l e n g t h (y , " . " i f (T R U E %i n %i s . n a (x |T R U E %i n %i s . n a (y s t o p (" A r g u m e n t s x a n d y m u s t n o t h a v e m i s s i n g v a l u e s . " c o v a r i a n c e< -v a r ( x ,y i f( v e r

19、 b o s e c a t ( " C o v a r i a n c e=" ,r o u n d ( c o v a r i a n c e ,4 ," . n " ,s e p=" " r e t u r n ( c o v a r i a n c e TODO 書寫風(fēng)格 編碼時通篇使用一種一致的風(fēng)格來書寫 TODO. T O D O ( 您的用戶名 :所要采取行動的明確描述 Attach 使用 a t t a c h 造成錯誤的可能數(shù)不勝數(shù). 避免使用它. 錯誤 (error 應(yīng)當(dāng)使用 s t o p ( 拋出. 對象和方法

20、 S 語言中有兩套面向?qū)ο笙到y(tǒng), S3 和 S4, 在 R 中這兩套均可使用. S3 方法的 可交互性更強, 更加靈活, 反之, S4 方法更加正式和嚴(yán)格. (對這兩套系統(tǒng)的說 明, 參見 Thomas Lumley 的文章 "Programmer's Niche: A Simple Class, in S3 and S4", 發(fā)表于 R News 4/1, 2004, 33 - 36 頁: /doc/Rnews/Rnews_2004-1.pdf 1. 這里推薦使用 S3 對象和方法, 除非您有很強烈的理由去使用 S4 對象和方 法. 使用 S4 對象的一個主要理由是在 C+ 代碼中直接使用對象. 使用一個 S4 泛型

溫馨提示

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

評論

0/150

提交評論