Window.pipedriveLeadboosterConfig = { القاعدة: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', الإصدار: 2, } ؛(الدالة () { var w = نافذة إذا كان (w.LeadBooster) { console.warn('LeadBooster موجود بالفعل') } وإلا { { w.LeadBooster = { q: [], على: دالة (ن، ح) { { هذا.q.push({ t: 'o'، n: n، n: n، h: h }) }, الزناد: الدالة (n) { هذا.q.push({ t: 't'، n: n: n }) }, } } })() التجزئة للاستخدام أو عدم الاستخدام - The Codest
The Codest
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • الصناعات
    • التكنولوجيا المالية والمصرفية
    • E-commerce
    • أدتك
    • التكنولوجيا الصحية
    • التصنيع
    • الخدمات اللوجستية
    • السيارات
    • إنترنت الأشياء
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
السهم الخلفي العودة إلى الوراء
2022-07-12
تطوير البرمجيات

التجزئة للاستخدام أو عدم الاستخدام

The Codest

كرزيستوف بوزيفيتش

Software Engineer كبير Software Engineer

اقرأ مقالة قادمة من خبير روبي لدينا وتعرف على السبب الذي يجعلك لا تحتاج إلى هذه التجزئة دائمًا.

مقدمة

عندما نرغب في تجميع بعض الأشياء، غالبًا ما نستخدم #P63Teach_with_object أو تمديد الفترة العادية حلقة باستخدام # مع_الجسم. ولكن في معظم الحالات مطورو روبي يستخدمون التجزئة العادية كمُجمِّع وربما يكون ذلك جيدًا، ولكن في هذه المقالة، أود أن أوضح لكم أنه ليس من الضروري أن يكون التجزئة دائمًا.

الحالة

نفترض أن جميع الملفات موضوعة في دليل واحد (الناس).

لنفترض أن لدينا ما يلي الأشخاص/الأشخاص.csv file:

الاسم الأول، اسم العائلة، العمر
 جون,دو,24
 جين، دي، 45
 جوش,بي,55
 أندريا، بويا، 34
 أندرو,مور,54

نريد إيجاد إجمالي الصفوف ومتوسط الأعمار - يمكننا كتابة البرنامج النصي التالي:

الأشخاص/المحلل.rb

يتطلب 'csv'

مُجمّع = CSV.foreach('people.csv'، الرؤوس: صحيح)
.withobject({ المجموع: 0، المجموع الكلي: 0 }) do |row, agg|
agg[:الإجمالي] += 1
agg[:المجموع] += الصف ['العمر'].toi
النهاية

الإجمالي = المُجمَّع [:الإجمالي]
متوسط العمر = مُجمَّع [:إجمالي العمر].to_f / الإجمالي

يضع "الإجمالي: #{total}"
يضع "متوسط العمر: #{متوسط العمر}"

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

الأشخاص/العصر_المُجمِّع.rb

صنف AgeAggregator
المُجمِّع: المجموع، :المجموع العمري

تعريف التهيئة
الإجمالي = 0
@الإجمالي_العمر = 0
نهاية

تعريف زيادة!
@الإجمالي += 1
النهاية

ديف incrementage! (العمر)
@الإجمالي += العمر
نهاية

تعريف متوسط العمر
المجموع الكلي.to_f / المجموع الكلي
النهاية
النهاية

وبعد ذلك ستبدو الحلقة كما هو موضح أدناه:

الأشخاص/المحلل.rb

يتطلب 'csv'
يتطلب نسبيًا './ Ageaggregator.rb'

مُجمَّع = CSV.foreach('people.csv'، الرؤوس: صحيح)
.withobject(AgeAggregator.new) do |row, agg|
agg.increment!
agg.incrementage!(row['age'].to_i)
النهاية

يضع "الإجمالي: #{aggregated.total}"
يضع "متوسط العمر: #{متوسط العمر الإجمالي}"

أعتقد أن الأمر أكثر وضوحاً.

الملخص

لقد كتبنا المزيد من التعليمات البرمجية، ولكن يتم استخراج تفاصيل المستوى الأدنى إلى الفصل المنفصل. الآن يُقرأ النص الرئيسي بشكل أفضل بكثير.

بالطبع، يمكنك أن تجادل بأن المثال أبسط من أن يبذل الكثير من الجهد في إعادة الهيكلة، ولكن بربك - إنه مجرد مثال؛). إذا كان عليك تجميع المزيد من البيانات، فإن كائنات التجميع هذه هي حقًا طريقة الإنقاذ.

راية التعاون

اقرأ المزيد:

إيجابيات وسلبيات تطوير برمجيات روبي

السكك الحديدية ووسائل النقل الأخرى

تطوير القضبان باستخدام TMUX و Vim و Fzf + Ripgrep

مقالات ذات صلة

التكنولوجيا المالية

5 أمثلة على أفضل استخدامات روبي

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

The Codest
بافيل موسزينسكي Software Engineer
تطوير البرمجيات

توظيف مطورين داخليين مقابل مطورين خارجيين

التوظيف داخلياً أم خارجياً؟ إنها معضلة كبيرة! اكتشف مزايا outsourcing أو بناء فريق داخلي في المقالة التالية.

The Codest
غريغورز روزموس قائد وحدة جافا
تطوير البرمجيات

قصة نجاح The Codest: من مطور روبي إلى رائد في مجال روبي

تعرّف على توماش زكاراديك - رئيس عمليات الأفراد في The Codest. اكتشف رحلة توميك المهنية من مدير روبي إلى عضو في المجموعة الأساسية. كيف تمكن من...

The Codest
توماش زكاراديك مهندس التطوير
تطوير البرمجيات

اعرف المزيد عن Ruby on Rails مع حانة/فرع

يمكن أن تجلب Pub/Sub العديد من الفوائد للمشروع - يمكنها أن تجعل الكود نظيفًا وتفصل الخدمات وتجعلها قابلة للتطوير بسهولة. تعرف على المزيد حول Pub/Sub في المقالة التالية...

The Codest
ميشال بافلاك مطور روبي أول

اشترك في قاعدة معارفنا وابقَ على اطلاع على آخر المستجدات في قطاع تكنولوجيا المعلومات.

    نبذة عنا

    The Codest - شركة دولية لتطوير البرمجيات لها مراكز تقنية في بولندا.

    المملكة المتحدة - المقر الرئيسي

    • المكتب 303 ب، 182-184 شارع هاي ستريت نورث E6 2JA
      لندن، إنجلترا

    بولندا - مراكز التكنولوجيا المحلية

    • مجمع مكاتب فابريتشنا المكتبي، أليجا
      بوكوجو 18، 31-564 كراكوف
    • سفارة الأدمغة، كونستروكتورسكا
      11, 02-673 02-673 وارسو، بولندا

      The Codest

    • الصفحة الرئيسية
    • نبذة عنا
    • الخدمات
    • دراسات الحالة
    • اعرف كيف
    • الوظائف
    • القاموس

      الخدمات

    • استشاري
    • تطوير البرمجيات
    • تطوير الواجهة الخلفية
    • تطوير الواجهة الأمامية
    • Staff Augmentation
    • مطورو الواجهة الخلفية
    • مهندسو السحابة
    • مهندسو البيانات
    • أخرى
    • مهندسو ضمان الجودة

      الموارد

    • حقائق وأساطير حول التعاون مع شريك خارجي لتطوير البرمجيات
    • من الولايات المتحدة الأمريكية إلى أوروبا: لماذا تقرر الشركات الأمريكية الناشئة الانتقال إلى أوروبا؟
    • مقارنة مراكز تطوير التكنولوجيا في الخارج: تك أوفشور أوروبا (بولندا)، آسيان (الفلبين)، أوراسيا (تركيا)
    • ما هي أهم التحديات التي تواجه CTOs ومديري تكنولوجيا المعلومات؟
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • شروط استخدام الموقع الإلكتروني

    جميع الحقوق محفوظة © 2025 بواسطة The Codest. جميع الحقوق محفوظة.

    arArabic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek arArabic