Menu
العربية

أداة مقارنة الفروق

قارن نصين أو كتلتين من الكود جنباً إلى جنب بالسطر والكلمة.

Last updated

الوضع
الأصلي6 سطر
المعدل6 سطر
الفرق+3 3 · 3 دون تغيير
function greet(name) {
+
function greet(name) {
    console.log("Hello, " + name);
+
    console.log(`Hello, ${name}!`);
    return name;
+
    return name.toUpperCase();
}
+
}
+
greet("world");
+
greet("World");

ما هي أداة Diff Checker؟

أداة Diff Checker تقارن بين قطعتين من النص أو الشيفرة وتُبرز ما أُضيف وما حُذف وما تغيّر. المطوّرون يستخدمون المقارنة باستمرار: لمراجعة الكود، وتتبّع تغييرات ملفات الإعداد، ومقارنة استجابات الـAPI، والتحقّق من عمليات الترحيل (migrations)، وفهم التعديلات قبل اعتمادها.

قراءة الـdiff مهارة أساسية لأي مطوّر؛ فهي ما يفصل بين *تغييرات السلوك الحقيقية* وإعادة التنسيق التي لا تؤثّر على شيء، وتساعدك على اصطياد ذلك الحرف الوحيد المتغيّر في كتلة من 200 سطر. وبمجرّد أن تعتاد على إيقاع الألوان (أخضر / أحمر / أصفر) ستصبح مراجعة الكود أسرع بكثير.

هناك نوعان رئيسيان للمقارنة: *مقارنة على مستوى السطر* (line diff) لمعرفة الأسطر التي تغيّرت، و*مقارنة على مستوى الكلمة أو الحرف* (word/character diff) لمعرفة ما الذي تغيّر فعلًا داخل السطر. الأداة الجيّدة تتيح لك التبديل بينهما حسب ما تقارنه: شيفرة مصدرية أم فقرات نصية.

ما الذي ستتعلّمه أثناء مقارنة النصوص

  • مقارنة الأسطر تكشف *أين* حدث التغيير، أمّا مقارنة الكلمات والحروف فتكشف *ما الذي* تغيّر داخل السطر نفسه.
  • المسافات البيضاء قد تكون ذات معنى (في Markdown وYAML وPython) أو غير مؤثّرة (في معظم اللغات الأخرى) — فعّل أو عطّل خيار تجاهل المسافات وفقًا لذلك.
  • قد يبدو الـdiff صغيرًا لكن أثره ضخم إذا غيّر قيمة، أو شرطًا، أو مسارًا (route)، أو متغيّر بيئة، أو feature flag.

كيف تقارن نصّين خطوة بخطوة

  1. ألصق النسختين

    ضع النص الأصلي في الجهة الأولى والنسخة الجديدة في الجهة الثانية. كود، JSON، نص عادي، ملفات إعداد — كل شيء يعمل.

  2. اختر بين مقارنة السطر أو الكلمة

    استخدم مقارنة السطر للشيفرة المصدرية أو البيانات المنظَّمة. وانتقل إلى مقارنة الكلمة عند مقارنة فقرات نصية حيث الصياغة هي المهمّة.

  3. تحكّم بالمسافات وحساسية الأحرف

    فعّل خيار *تجاهل المسافات* (ignore whitespace) إذا كنت تهتم بالتغييرات الحقيقية فقط، وفعّل *تجاهل حالة الأحرف* (ignore case) عند مقارنة سجلّات أو نصوص لا تهمّ فيها الحالة.

  4. اقرأ المخرجات الملوّنة

    المحتوى المحذوف يظهر بالأحمر في الجهة الأصلية، والمحتوى المضاف يظهر بالأخضر في النسخة الجديدة. والأسطر المعدَّلة غالبًا تظهر مرّتين، واحدة في كل جهة.

  5. كرّر وحسّن

    عدّل أيًّا من الجهتين وستجد المقارنة تتحدّث مباشرة. مفيد جدًّا لتجهيز patch نظيف قبل فتح pull request.

مرجع سريع لألوان ورموز الـdiff

هذه التعارفات يعتمدها Coddy، كما يعتمدها git diff وGitHub ومعظم عارضات الفروقات الأخرى.

الرمزالمعنىأين يظهر
أحمر / -سطر محذوف من النسخة الأصليةالجهة الأصلية
أخضر / +سطر مُضاف في النسخة الجديدةالجهة الجديدة
أصفر / في الجهتينسطر معدَّل — تغيير جزئي داخل السطركلتا الجهتين
بدون لونسطر لم يتغيّر — مشترك بين النسختينكلتا الجهتين
@@ ... @@ترويسة كتلة (hunk) في git diff — أرقام الأسطرمخرجات git diff في الطرفية
Word diffتغيير على مستوى الكلمة أو الحرف داخل سطر معدَّلمُبرَز داخل السطر الأصفر

أمثلة لتجربتها على الـdiff

اصطياد خطأ مطبعي في ملف الإعداد

قبل
API_TIMEOUT=3000
بعد
API_TIMEOUT=30000

صفر إضافي واحد حوّل المهلة من 3 ثوانٍ إلى 30 ثانية. أداة الـdiff ترصد ذلك خلال ثوانٍ، بينما القراءة بالعين لملفَّي .env كثيرًا ما تُفوّت مثل هذا الخطأ.

تعديل على مستوى الكلمة

قبل

The user can login.

بعد

The user can log in.

مقارنة الكلمة تُبرز التغيير loginlog in بدقة. أمّا مقارنة السطر فستعرض السطر كاملًا كأنّه تغيّر، بينما تعزل مقارنة الكلمة موضع التعديل الفعلي.

مقارنة استجابتَي API

الاستجابة A
{  "id": 42,  "status": "draft",  "published": false}
الاستجابة B
{  "id": 42,  "status": "published",  "published": true}

تكشف المقارنة بوضوح أن حقلَين مرتبطَين قد تغيّرا معًا. هذه أسرع طريقة للتأكّد من أن نداء API الذي يغيّر الحالة قد فعل ما يُفترض به فعلًا.

أخطاء شائعة عند استخدام الـdiff

  • تجاهل المسافات البيضاء حين تكون مهمّة — فـMarkdown وYAML وPython جميعها تعتمد على الإزاحة (indentation).
  • مراجعة الأسطر الخضراء (المضافة) فقط وإغفال الأسطر الحمراء (المحذوفة) المهمّة.
  • افتراض أن الـdiff النظيف يعني أن النسخة الجديدة صحيحة. الـdiff يُظهر *ما الذي تغيّر* فقط، لا *ما إذا كان التغيير صائبًا*.

أسئلة شائعة حول Diff Checker

ما الفرق بين أداة مقارنة النصوص (text compare) وأداة الـdiff checker؟
لا فرق — هما اسمان لأداة واحدة. كلاهما يقارن قطعتَي نص ويُبرز ما أُضيف وما حُذف وما عُدِّل.
هل يمكنني مقارنة الشيفرة بهذه الأداة؟
نعم، أداة مقارنة النصوص تعمل مع الكود وJSON وSQL وMarkdown وYAML وملفات الإعداد والنصوص العادية. وعرض المقارنة على مستوى السطر مفيد جدًّا في مراجعة الشيفرة المصدرية.
لماذا يستخدم المطوّرون الـdiff كل يوم؟
الـdiff هو الأساس الذي تقوم عليه مراجعة الكود، وتتبّع التغييرات، وتعقّب الـregression، والتحقيق بعد الأعطال. أوامر مثل git diff، وعروض الـpull request، ولوحات المقارنة في بيئات التطوير (IDE) كلّها تطبيقات للفكرة نفسها.
هل يجب تجاهل المسافات البيضاء؟
فقط حين لا تكون المسافات مهمّة لنوع الملف. في Python وYAML وMarkdown تكون المسافات ذات معنى ويجب أخذها بالحسبان. أمّا في معظم اللغات الأخرى، فتجاهلها يجعل الـdiff أنظف.
هل بياناتي آمنة في هذه الأداة؟
نعم — المقارنة تجري بالكامل داخل متصفّحك، فلا يُرفع نصّك ولا يُخزَّن في أي مكان. آمنة للاستخدام مع الكود الداخلي وملفات الإعداد وعيّنات بيانات العملاء.

أدوات مطورين أخرى

تعلّم البرمجة مع Coddy

ابدأ الآن