لدينا العديد من أنماط الترميز أو مواصفات الترميز. ولكن غالبًا ما ننسى هذا العنصر، أي أننا غالبًا ما نستخدم معلمات منطقية في معلمات الوظيفة، مما سيقلل بشكل كبير من إمكانية قراءة الكود. لا تصدق ذلك؟ دعونا نلقي نظرة أولاً على الكود أدناه.
عندما تقرأ الكود التالي، ماذا يعني هذا الكود في رأيك؟
widget->repaint(false); هل تريد إعادة الرسم؟ أم أنها تعني شيئا آخر؟
بعد قراءة المستند، علمنا أن هذه المعلمة فورية، أي أن الخطأ يعني عدم إعادة الرسم على الفور، والصواب يعني أنه سيتم إعادة رسم الكود على الفور.
توجد أيضًا مثل هذه الوظيفة في Windows API: InvalidateRect. عندما ترى الكود التالي، ماذا تعتقد أنه يعني؟
InvalidateRect(hwnd, lpRect, false)؛ دعونا لا نتحدث عن مدى سوء اسم وظيفة InvalidateRect، فلنتحدث عن المعلمة الخاطئة أولاً؟ إبطال يعني "إبطال XXX"، ماذا يعني خطأ؟ ضعف سلبي؟ هل يعني بالإيجاب؟
إذا رأيت رمزًا كهذا، فسيكون الأمر مربكًا للغاية. لذلك، يجب عليك إلقاء نظرة على الوثائق أو تعريف وظيفة InvalidateRect، وسترى أن المعلمة هي BOOL bErase، مما يعني: "سواء كنت تريد إعادة رسم الخلفية."
هناك العديد من هذه الأشياء، بالنظر إلى الكود التالي، أريد استبدال "%USER%" في str باسم المستخدم الحقيقي:
str.replace("%USER%"، user, false); // Qt 3TNND، ماذا يعني خطأ؟ لا استبداله؟ أم أنها تعني شيئا آخر؟
اكتشفت بعد قراءة الوثائق أن كلمة false تعني: "استبدال غير حساس لحالة الأحرف".
في الواقع، إذا كنت تستخدم متغيرات/ثوابت التعداد بدلاً من المتغيرات المنطقية، فسوف تجعل الكود الخاص بك أكثر قابلية للقراءة، مثل: