PHONG CACH VIET CODE

Tham khao: - The tidyverse style guide (Hadley Wickham): https://style.tidyverse.org/

“Good coding style is like correct punctuation: you can manage without it, butitsuremakesthingseasiertoread.” Hadley Wickham

1.TEN FILE

Good

ucb-admit.csv ## Bad UCB Admit.csv

  • Mỗi 1 file R chỉ nên gồm những hoặc đoạn code có mối quan hệ với nhau xét về mặt ngữ nghĩa, không nên viết những file mã lệnh quá dài, gây ra khó khăn khi người đọc phải scroll lên xuống nhiều để nắm bắt ý tưởng. Nếu như việc thực thi các file diễn ra theo trình tự thì nên đặt số thứ tự cho file:

    0-download.R 1-parse.R 2-explore.R

2. TEN OBJECT

3.Tên hàm

Good

clean_data <- function(x){

}

Bad

dataClean <- function(x){

} # 4. DAU CACH (KHOANG TRANG-SPACE) - Đặt dấu cách trước và sau các toán tử (=, +, -, <-, %>%, …) - Đặt dấu cách sau dấu phẩy (không đặt dấu cách trước dấu phẩy ,) - như viết chính tả thông thường - Không đặt khoảng trắng sau tên hàm ## Good average <- mean(feet / 12 + inches, na.rm = TRUE) ## Bad average<-mean(feet/12+inches,na.rm=TRUE) ## Good summary(mtcars) ## Bad summary (mtcars)

  • Đối với :, ::, ::: thì có thể không cần khoảng trắng:

Good

x <- 1:10 base::get

Bad

x <- 1 : 10 base :: get

  • Có thể sử dụng thêm khoảng trắng để canh dòng giúp mã nguồn dễ đọc hơn.

list( total = a + b + c, mean = (a + b + c) / n )

  • Không sử dụng khoảng trắng trobng các đoạn mã lệnh giới hạn bởi [ và ], trừ khi đó là các dấu ,

Good

if (debug) do(x) diamonds[5, ]

Bad

if ( debug ) do(x)
x[1,]
x[1 ,]

5. ggplot2

Trong trường hợp biểu đồ quá phức tạp, ta có thể để mỗi thuộc tính mapping trong ggplot thành một dòng

Good

ggplot(diamonds %>% head(100), mapping = aes(x = price, y = z, shape = carat)) + geom_point(aes(col = carat)) ## Not very bad ggplot(diamonds %>% head(100), mapping = aes(x = price, y = z, shape = carat)) + geom_point(aes(col = carat))

6. VIET CODE QUA DAI

#Good iris %>% group_by(Species) %>% summarise( Sepal.Length = mean(Sepal.Length), Sepal.Width = mean(Sepal.Width), Species = n_distinct(Species) ) #Not very bad iris %>% group_by(Species) %>% summarise(Sepal.Length = mean(Sepal.Length), Sepal.Width = mean(Sepal.Width), Species = n_distinct(Species))

7. Dấu gán

8. QUOTES

ggplot(diamonds, mapping = aes(x = price)) + geom_histogram() + # Good labs(title = “Shine bright like a diamond”, # Good x = “Diamond prices”, # Bad y = ‘Frequency’)

9. Viết function khi mã được dùng lại

Trong quá trình viết mã, khi một luồng công việc được lặp đi lặp lại, bạn nên tham số hoá những đoạn code đó và viết thành function. Thói quen này giúp mã nguồn ngắn hơn, dễ quản lý hơn khi nếu điều chỉnh thì chỉ cần điều chỉnh ở 1 nơi.

10. Trình bày mã code ngay hàng thẳng lối

Good

calculate_mean <- function(x){ return(mean(x)) }

Bad

calculate_mean <- function(x) mean(x)

long_function_name <- function(a = “a long argument”, b = “another argument”, c = “another long argument”) {

}

  • Gọi 1 function có nhiều tham số

analysis_result <- analyze(a = “a long argument”, b = “another argument”, c = “another long argument”)

  • hoặc vẽ 1 plot của ggplot với nhiều lớp phức tạp

ggplot(dat, aes(x = rating)) + geom_histogram(binwidth = .5, colour = “black”, fill = “white”) + facet_grid(cond ~ .) + geom_vline(data = cdat, aes(xintercept = rating.mean), linetype = “dashed”, size = 1, colour = “red”)

  • Khi edit mã, thường sử dụng phím tab để căn chỉnh. Nếu dựng RStudio, cần thiết lập bước tab là 2 và đảm bảo bấm phím tab thì các khoảng trắng sẽ được thêm vào như cấu hình dưới đây:
    https://rpubs.com/thonguyenduy/phong-cach-viet-ma-r