0Pricing
R Academy · درس

التعليقات والأسلوب وقابلية القراءة

اكتب شيفرة R نظيفة وموثّقة باتباع دليل أسلوب tidyverse.

التعليقات والأسلوب وقابلية القراءة درس مجاني في R Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في R Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة R Academy 4 دروس في المجموع.

التعليقات أحادية السطر باستخدام #

في R، تبدأ التعليقات بالحرف #. يتجاهل المفسّر كل ما يأتي من # حتى نهاية السطر. التعليقات موجهة إلى البشر، لذا اشرح السبب لا ما يحدث فقط.

# This is a comment — R ignores it completely
x <- 42   # inline comment after code

# Bad comment (states the obvious):
y <- y + 1   # add 1 to y

# Good comment (explains intent):
y <- y + 1   # shift index to 1-based for output display

cat('x =', x)

عناوين الأقسام باستخدام ------

من الأساليب الشائعة في R إنشاء عناوين للأقسام بإضافة أربع شرطات أو علامات مساواة أو علامات هاش على الأقل بعد نص التعليق. يتعرف RStudio عليها ويضيفها إلى المخطط العام للمستند لتسهيل التنقل.

# Data Loading -------------------------------------------------------

# This section loads raw CSV files from the data/ folder

# Data Cleaning =======================================================

# Remove duplicates and fix missing values

# Modeling ############################################################

# Fit linear model and evaluate

cat('Section headers improve navigation')

اصطلاح التسمية snake_case

يوصي دليل أسلوب tidyverse باستخدام snake_case لجميع أسماء الكائنات، أي كلمات مكتوبة بأحرف صغيرة تفصل بينها شرطات سفلية. تجنب النقاط، التي تبدو مثل استدعاءات الأساليب في لغات أخرى، وتجنب camelCase للحفاظ على الاتساق.

# Good: snake_case
user_age <- 25
monthly_revenue <- 15000
calculate_mean <- function(x) mean(x)

# Avoid: dots in names (looks like OOP method calls)
user.age <- 25       # confusing

# Avoid: camelCase (inconsistent with tidyverse)
userAge <- 25

# Avoid: ALL_CAPS (reserved for true constants by convention)
MAX_RETRIES <- 3     # acceptable for config constants only

cat('snake_case wins')

المسافات حول العوامل

ضع دائمًا مسافات حول عوامل الإسناد والمقارنة. فهذا يحسن قابلية القراءة بدرجة كبيرة. والاستثناء الوحيد يكون داخل قوائم وسائط الدوال، حيث يربط = أسماء الوسائط بقيمها.

# Good: spaces around <- and operators
x <- 10
y <- x + 5
result <- x * y - 2
is_valid <- x > 0 & y < 100

# Bad: cramped
x<-10
y<-x+5

# Function arguments: = without extra spaces is fine
mean(x = c(1, 2, 3), na.rm = TRUE)

# Comparison operators also need spaces
if (x > 0) cat('positive')
if (x >= 0 & y <= 100) cat('in range')

استخدم <- بدلًا من = للإسناد

مع أن R تسمح باستخدام = للإسناد في المستوى الأعلى، فإن العرف السائد في المجتمع هو استخدام <- لإسناد الكائنات، وحصر استخدام = في قيم وسائط الدوال. يجعل هذا التمييز الشيفرة أسهل بكثير في القراءة للوهلة الأولى.

# Correct: <- for assignment
name <- 'Alice'
score <- 95.5
results <- c(1, 2, 3)

# Correct: = inside function calls
round(3.14159, digits = 2)
read.csv('data.csv', header = TRUE, sep = ',')

# Avoid: = for top-level assignment
# name = 'Alice'   <- works but not idiomatic

cat('Assignment convention:', name, score)

حد الأسطر البالغ 80 محرفًا

يضمن إبقاء الأسطر تحت 80 محرفًا سهولة قراءة الشيفرة في المحررات ذات الأجزاء المنقسمة والصفحات المطبوعة وأدوات مراجعة الشيفرة. في RStudio، يمكنك عرض دليل هامش عند العمود 80 عبر Tools → Global Options → Code → Display.

# Bad: one very long line (hard to read)
result <- some_function(argument_one = 'value', argument_two = 100, argument_three = TRUE, argument_four = 'long_string')

# Good: break at commas, indent continuation
result <- some_function(
  argument_one   = 'value',
  argument_two   = 100,
  argument_three = TRUE,
  argument_four  = 'long_string'
)

cat('Readable at 80 chars')

عدم استخدام الفواصل المنقوطة

بخلاف JavaScript أو C، لا تتطلب R استخدام الفواصل المنقوطة في نهاية العبارات. يمكن استخدام الفواصل المنقوطة لوضع عدة عبارات في سطر واحد، لكن دليل الأسلوب ينص على: عبارة واحدة في كل سطر، ومن دون فواصل منقوطة.

# Bad: semicolons and multiple statements per line
x <- 1; y <- 2; z <- x + y

# Good: one statement per line
x <- 1
y <- 2
z <- x + y

# The semicolon form is only acceptable in very short
# interactive throwaway code, never in scripts
cat('z =', z)

أسماء المتغيرات القابلة للقراءة

اختر أسماء وصفية من دون أن تكون طويلة أكثر من اللازم. القاعدة الجيدة هي: إذا احتجت إلى أكثر من ثانية لفهم اسم متغير بعد ستة أشهر، فهو قصير جدًا أو غامض أكثر من اللازم.

# Too cryptic:
d <- read.csv('data.csv')
tmp <- d[d$v1 > 0, ]
r <- lm(v2 ~ v1, data = tmp)

# Good names:
sales_data    <- read.csv('data.csv')
positive_rows <- sales_data[sales_data$revenue > 0, ]
revenue_model <- lm(profit ~ revenue, data = positive_rows)

# Avoid abbreviations that are not universally understood:
# n_obs is fine (number of observations)
# nrv is not (nobody knows what this is)

cat('Names tell the story')

الأقواس المعقوفة والمسافة البادئة

يحدد دليل أسلوب tidyverse ما يلي: يكون القوس المعقوف الافتتاحي { في السطر نفسه، ويكون القوس المعقوف الختامي } في سطر مستقل. استخدم مسافتين للمسافة البادئة، وليس علامات التبويب. وتُعد المسافة البادئة المتسقة أساسية لقراءة المنطق المتداخل.

# Good style: brace on same line, 2-space indent
if (x > 0) {
  cat('positive\n')
} else {
  cat('non-positive\n')
}

# Good function definition:
calculate_bmi <- function(weight_kg, height_m) {
  bmi <- weight_kg / height_m^2
  round(bmi, 1)
}

cat('BMI:', calculate_bmi(70, 1.75))

المسافات داخل الأقواس وحول الفواصل

ضع مسافة بعد كل فاصلة، كما في الكتابة الإنجليزية، لكن لا تضع مسافة قبل الفاصلة أو مباشرةً داخل الأقواس. يحاكي ذلك الترميز الرياضي ويجعل الفهرسة أسهل في القراءة.

# Good: space after comma, not before
x <- c(1, 2, 3, 4, 5)
m <- matrix(1:9, nrow = 3, ncol = 3)

# Subsetting: no space before [ or inside []
first_row <- m[1, ]      # good
value     <- m[2, 3]    # good

# Bad:
# c(1,2,3)     <- no space after comma
# m[ 1, ]      <- space after [
# m[1 , ]      <- space before comma

cat('Spacing is consistent')

استخدام styler وlintr

تعمل أداتان على أتمتة فرض أسلوب الكتابة في R. تعيد styler تنسيق شيفرتك بما يطابق دليل أسلوب tidyverse. وتفحص lintr شيفرتك فحصًا ساكنًا بحثًا عن مشكلات الأسلوب والأخطاء المحتملة من دون تشغيلها. وتتوافق الأداتان مع RStudio.

# styler: reformat a file automatically
# install.packages('styler')
# styler::style_file('my_script.R')

# styler: reformat the whole project
# styler::style_dir('R/')

# lintr: check for style and potential bugs
# install.packages('lintr')
# lintr::lint('my_script.R')

# lintr reports issues like:
#   line 10: [object_name_linter] Variable 'myVar' should use snake_case
#   line 15: [spaces_around_ops_linter] No space before '<-'

cat('Style tools: styler + lintr')

تحقق سريع

وفقًا لدليل أسلوب tidyverse، ما الطريقة الصحيحة لكتابة عبارة إسناد في R؟

الأسلوب وقابلية القراءة — أهم النقاط

شيفرة R المنسقة جيدًا احترافية وقابلة للصيانة والتعاون:

  • # للتعليقات — اشرح السبب لا ما يحدث فقط
  • عناوين الأقسام باستخدام ------ أو ====== لتسهيل التنقل
  • snake_case لجميع أسماء الكائنات والدوال
  • مسافات حول <- و+ و== وغيرها
  • استخدم <- للإسناد، و= داخل وسائط الدوال فقط
  • بحد أقصى 80 محرفًا في السطر — قسّم الاستدعاءات الطويلة على عدة أسطر
  • لا تستخدم الفواصل المنقوطة — عبارة واحدة في كل سطر
  • مسافة بادئة من مسافتين، مع وضع { في السطر نفسه
  • استخدم styler للتنسيق التلقائي، وlintr لاكتشاف المشكلات
# Putting it all together:

# Calculate summary statistics ----------------------------------------
calculate_summary <- function(values, remove_na = TRUE) {
  cleaned <- values[!is.na(values)]
  list(
    mean   = mean(cleaned),
    median = median(cleaned),
    sd     = sd(cleaned)
  )
}

test_scores <- c(85, 90, NA, 78, 92, 88)
stats <- calculate_summary(test_scores)
cat('Mean:', stats$mean, '\n')
cat('SD:  ', stats$sd)

الأسئلة الشائعة

هل درس «التعليقات والأسلوب وقابلية القراءة» مجاني؟

نعم — نص درس «التعليقات والأسلوب وقابلية القراءة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة R Academy، انتقل إلى CoddyKit PRO. تتضمن دورة R Academy 4 دروس في المجموع.

ماذا ستتعلم في «التعليقات والأسلوب وقابلية القراءة»؟

اكتب شيفرة R نظيفة وموثّقة باتباع دليل أسلوب tidyverse. تتمرن على R Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ R Academy؟

لا تُشترط خبرة سابقة. R Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «التعليقات والأسلوب وقابلية القراءة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس R Academy هذا؟

نعم. كل درس في R Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. استخدام source() لتحميل السكربتات
  2. التعليقات والأسلوب وقابلية القراءة
  3. أدلة العمل ومسارات الملفات
  4. مشاريع R وإدارة مساحة العمل
← العودة إلى R Academy