Phong cách viết mã R

ĐĂNG TIN MUA BÁN CHO THUÊ NHÀ ĐẤT BẤT ĐỘNG SẢN TRÊN THONGKENHADAT

R không những sử dụng trong những nghiên cứu khoa học của cá nhân mà còn có thể chia sẻ cho cộng đồng, tham gia vào những dự án lớn có nhiều người cùng phát triển mã lệnh. Do đó, rèn luyện một phong cách viết mã R trong sáng, đẹp là việc cần thiết. Bài viết trình bày 1 số hướng dẫn viết và trình bày mã nguồn R dựa trên các nguồn sau:

  • Hướng dẫn viết code R của Google

    Bài viết hiện tại: Phong cách viết mã R

  • Hướng dẫn viết code R của Hadley Wickham

  • Kinh nghiệm của người viết khi lập trình với các ngôn ngữ khác như Java, C#, Python, … và tham gia các dự án.

Bài viết trình bày những điểm mà tác giả thấy quan trọng nhất và dễ thực hiện, không đòi hỏi phải cài đặt thêm các công cụ phần mềm khác.

Tổ chức thư mục

1 dự án phân tích dữ liệu điển hình không đơn thuần chỉ là viết mã nguồn R mà nó gồm nhiều bước khác nhau với rất nhiều đầu ra, đầu vào, báo cáo, kết xuất dữ liệu. Khi dự án càng lớn thì mức độ phức tạp càng gia tăng. Việc tổ chức sắp xếp tài nguyên (chủ yếu là file) trong dự án giữ vai trò quan trọng để người phát triển có thể tìm kiếm truy xuất nhanh chóng tài nguyên mình cần. Tác giả đề nghị cách thức tổ chức project theo cấu trúc thư mục. Bạn có thể sử dụng R Project của RStudio. Mỗi một dự án được dành riêng cho 1 thư mục. Cấu trúc thư mục có thể tổ chức như dưới đây:

Bài viết liên quan: Hướng dẫn phòng chống dịch Covid-19 tại trụ sở làm việc (đính kèm Bộ tiêu chí đánh gia an toàn phòng, chống lây nhiễm COVID-19 tại nơi làm việc)

Trong đó:

  • data: chứa các tập tin dữ liệu đầu vào
  • figure: chứa các tập tin hình hoặc data visualization.
  • presentation: chứa các presentation (nếu như bạn dùng rmarkdown để viết presentation).
  • documentation: chứa các documentation (nếu như dùng rmarkdown để viết document).

Các file mã nguồn .R hay .Rmd được để ở ngoài các thư mục.

Toán tử gán

Dùng <- thay vì = khi thực hiện phép gán.

# Good a <- 5 # Bad a = 5

Tên biến

Tên biến nên dùng danh từ tiếng Anh, chữ nhỏ – lower case – và sử dụng _ để phân cách giữa các chữ. Tên biến nên gợi mở và liên quan đến bối cảnh của phân đoạn mã, tránh việc đặt tên biến khó hiểu hay cụt ngủn. Đặt tên biến tốt giúp người đọc hiểu nhanh chóng mã nguồn và bám sát tư tưởng của người viết mã. Tên biến tránh trùng lắp với các keyword của R.

# Good day_one day_1 # Bad first_day_of_the_month DayOne dayone djm1 a b c chuoi1 vector101 data.frame

Tên hàm

Tương tự tên biến, tên hàm nên sử dụng động từ tiếng Anh, phân cách giữa các chữ bằng _, chữ nhỏ lower case và tránh sử dụng tên hàm trùng với các tên hàm của package đang sử dụng.

# Good clean_data <- function(x){ } # Bad dataClean <- function(x){ }

Khoảng trắng (space)

Sử dụng khoảng trắng trước và sau bất kì 1 toán tử nào, thêm 1 khoảng trắng sau dấu phẩy , (tương tự như khi viết tiếng Anh).

# Good average <- mean(feet / 12 + inches, na.rm = TRUE) # Bad average<-mean(feet/12+inches,na.rm=TRUE)

Đố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 [], trừ khi đó là các dấu ,

# Good if (debug) do(x) diamonds[5, ] # Bad if ( debug ) do(x) x[1,] x[1 ,] 

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.

File mã nguồn

File mã nguồn nên được đặt tên theo kiểu chữ thường, giữa các chữ phân cách bằng -. Extension của file là .R.

Bài viết liên quan: Hàng loạt cách môi giới nhà đất hiệu quả không phải ai cũng biết

# Good fit-models.R utility-functions.R # Bad foo.r stuff.r

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:

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

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

Soạn mã lệnh cũng như trình bày văn bản, ngay hàng thẳng lối giúp người đọc thoải mái, đồng thời có thể tách bạch được ý tưởng thành từng phân đoạn. Mỗi một dòng mã không nên kéo dài quá hơn 80 kí tự.

function luôn được mở đầu và kết thúc với {} và luôn dùng return ở dòng lệnh gán giá trị trả về, cho dù function đó chỉ có 1 lệnh đơn giản

# 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:

Viết và trình bày mã nguồn đẹp, gọn gàng, khúc chiết giúp dễ theo dõi và tăng hiệu năng làm việc.

Nguồn TKNDKTCS2030: https://wiki.thongkenhadat.com
Danh mục (THONGKENHADAT): Hướng dẫn

Xem thêm:   Cách phá thai bằng thuốc an toàn (Hướng dẫn & Tư vấn)
error: Alert: Content is protected !!