it-swarm.asia

هل لا تزال فعالية C++ فعالة؟

من ما رأيته في هذا المنشور قررت أن أبدأ في قراءة الكتاب فعال C++ .

لكن الآن ، هناك العديد من الميزات الجديدة بسبب الإصدار C++ 11 وتغيير بعض الممارسات الجيدة ، لست متأكدًا من أنها فكرة جيدة بالفعل أم لا. هل استبعد ظهور C++ 11 أيًا من النصائح الواردة في Effective C++؟ إذا كان الأمر كذلك ، فما هي المواضيع التي يجب أن أتجنبها؟

132
German Capuano

هذا ما قاله سكوت مايرز عن ذلك على مدونته الخاصة

مما قد يقودك إلى التساؤل عما إذا كانت المعلومات والنصائح الواردة في إصدار ما قبل C++ 0x من Effective C++ تظل ذات صلة. يسرني أن أبلغكم بذلك. والمثير للدهشة ذلك ، في الواقع. بعد أن أمضيت ما يقرب من عامين غارقين في تفاصيل C++ 0x ، كنت أتوقع أن أؤثر قليلاً كما راجعت جدول محتويات هذا الكتاب مع وضع C++ 0x في الاعتبار. بالتأكيد بعض العناصر ستكون غير لائقة. لكن النصيحة التي وجدتها سليمة. هل يجب على مطوري C++ 0x تفضيل consts و enums و inlines على #defines (البند 2)؟ يجب عليهم. هل يجب عليهم منع الاستثناءات من ترك المدمرات (البند 8)؟ من المؤكد. هل يجب عليهم استخدام الكائنات لإدارة الموارد؟ أعلن أعضاء البيانات الخاصة؟ النظر في بدائل للوظائف الافتراضية؟ عامل رمز مستقل المعلمة من القوالب؟ (العناصر 13 و 22 و 35 و 44). نعم ، نعم ، نعم ، نعم! كان هدفي دائمًا هو جدول المحتويات الفعال لـ C++ لتلخيص النصيحة في الكتاب ، ويظل هذا الملخص مطبقًا تمامًا على تطوير C++ 0x كما هو الحال في تطوير C++ "التقليدي". لغة C++ 0x هي لغة أكبر ، وهي في بعض النواحي لغة مختلفة ، لكن التقنيات الأساسية للاستفادة الفعالة من C++ "القديمة" تعد أساسية للاستخدام الفعال لـ C++ 0x ، أيضًا.

هذا لا يعني أن هذا C++ الفعال هو التطابق المثالي لـ C++ 0x. لا يناقش الكتاب الميزات الجديدة لـ C++ 0x ، لذلك العناصر الموجودة حول الاستخدام الفعال لتلك الميزات مفقودة. من المؤكد أن يحتوي C++ 0xified Effective C++ على عناصر مخصصة لنقل العمليات ، والتهيئة الموحدة ، وتعبيرات lambda ، ومن المحتمل أن يكون لها فصل كامل حول الاستخدام الفعال لواجهة برمجة التطبيقات المتزامنة. يحتوي هذا الكتاب أيضًا على أمثلة مختلفة ، على سبيل المثال ، الأمثلة التي تستخدم المتغيرات التلقائية ، والمستندة إلى النطاق للحلقات ، والمهيئات الافتراضية في الفصل ، وكذلك القالب المتغير العرضي. إلى الحد الذي يقصر فيه هذا الكتاب عن دعمه لـ C++ 0x ، فإن الأخطاء هي أخطاء الإهمال وليس العمولة.

UPDATE: العنوان الجديد Effective Modern C++ معروض للبيع منذ نوفمبر 2014 من O'Reilly و Amazon (والكثير غيرها يمكنك google لـ).

87
TemplateRex

نعم ، بالتأكيد لا تزال تستحق القراءة. يوجد كتاب جديد يعمل Scott عليه: Effective C++ 11 ، والذي يركز على الكود C++ 11 فقط. فعالة C++ لا تزال ذات صلة للغاية ، وليس محل الكتاب الجديد. شرائه ، وقراءته ، والتمتع :)

44
cdmh

أولاً ، لا يزال الكتاب صالحًا بالطبع لـ C++ 03.

اثنان ، مايرز يكتب أو كتب ، وهذا يتوقف على عندما تقرأ هذه الجملة ، فعالية C++ 11.

ثالثًا ، عند التحدث بشكل عام ، ستظل نقاط هذا الكتاب صالحة. C++ لا يزال يفضل السرعة على السلامة ، والعديد من القضايا في فعالة C++ تدور حول هذا.

فقط نوع النقطة التي أتوقع أن تكون غير صالحة هي تلك التي تقول "لا تفعل هذا ، افعل ذلك بدلاً من ذلك." "لا تفعل هذا" ستظل صالحة. ولكن C++ سوف تحل بعض المشاكل. على وجه الخصوص ، من المحتمل أن يتم إهمال أي توصيات لاستخدام التعزيز ، حيث تضمنت C++ 11 العديد من الميزات التي يشير إليها مايرز على وجه التحديد القارئ إلى Boost for.

20
djechlin