نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

اختلال الشيفرات ومشاكلها (Code Smells)

قد تعاني الشيفرات الكثير من الاختلالات والمشاكل الشكلية؛ فبمجرد اكتشاف تلك الاختلالات الظاهرية، يسهل علينا معرفة العلاج (التقنيات) وتطبيقه (إعادة التصميم) للحصول على شيفرة سليمة نظيفة. من هذه الاختلالات: المبالغة والإطالة قد يزداد حجم الشيفرات والتوابع (methods) والأصناف (classes) ازديادًا كبيرًا ليصل لمرحلةٍ يصعُب التعامل معها، ولا يحدث هذا بشكلٍ فجائيِّ دفعةً واحدةً، بل يكون ناتجًا عن تراكم الإضافات أثناء تطوير البرنامج (وخاصةً عندما لا يبذل أحدٌ جهدًا للحدِّ من ذلك التشعب)، ويبدو هذا التضخم واضحًا التوابع الطويلة (long methods): ...

الثوابت المعرَّفة مسبقًا في قسم التعامل مع نظام الملفات في PHP

الثوابت المذكورة في الأسفل مُعرَّفةٌ باستعمال هذا الملحق، وستُتاح هذه الثوابت فقط عند توفُّر الملحق إمّا عندما تُفسَّر (compiled) إلى لغة PHP أو عند التحميل الديناميكي وقت التنفيذ. الاسم النوع الوصف SEEK_SET integer SEEK_CUR integer SEEK_END integer LOCK_SH integer LOCK_EX integer LOCK_UN integer LOCK_NB integer GLOB_BRACE integer GLOB_ONLYDIR integer GLOB_MARK integer GLOB_NOSORT integer GLOB_NOCHECK integer GLOB_NOESCAPE integer GLOB_AVAILABLE_FLAGS integer PATHINFO_DIRNAME integer PATHINFO_BASENAME integer PATHINFO_EXTENSION integer PATHINFO_FILENAME integer منذ إصدار PHP 5.2.0. FILE_USE_INCLUDE_PATH integer البحث عن اسم الملف filename في المسار ...

مجال المتغيرات في أردوينو

تملك المتغيرات في لغة C، التي اشتقَّت لغة أردونيو منها، خاصيةً تدعى scope (مجال) تحدِّد مجال استعمال هذه المتغيرات ومن يمكنه الوصول إليها. هذا يختلف عن الإصدارات الحديثة للغاتٍ مثل BASIC التي يكون فيها المتغير عامًّا (global) دومًا. المتغيرات العامة يمكن أن تراها جميع الدوال في البرنامج. من جهة أخرى، تكون المتغيرات المحلية (local variables) مرئية في الدالة التي عُرَّفت ضمنها فقط وغير متاحة للدوال الأخرى. في بيئة أردونيو IDE، أي متغيِّر يُعرَّف خارج دالةٍ (مثل الدالة setup()‎ والدالة loop()‎ ...

الصنف Class في روبي

تُعدُّ الأصناف كائناتٍ من الدرجة الأولى (first-class objects) في روبي، وتعدُّ جميعها نُسخٌ من الصنف Class. عادةً، يمكن عادةً إنشاء صنف جديد بالشكل التالي: class Name # تكتب هنا الشيفرة التي تعرف سلوك الصنف end عندما يُنشَأ صنف جديد، يهيَّأ كائن من النوع Class ويسند إلى ثابت عام (global constant، هو Name في المثال السابق). عند استدعاء Name.new لإنشاء كائن جديد، يُنفَّذ التابع new الخاص بالصنف Class بشكل افتراضي. يمكن إثبات ذلك من خلال إعادة تعريف التابع new: class Class alias old_new ...

التحميل التلقائي وإعادة تحميل الثوابت في ريلز

يوثق هذا الدليل طريقة عمل التحميل التلقائي وإعادة تحميل الثوابت. بعد قراءة هذا الدليل، ستتعلم: الجوانب الرئيسية لثوابت لغة روبي. ماهية autoload_paths وكيفية عمل التحميل الحثيث (eager loading) في الإنتاج. كيفية عمل التحميل التلقائي للثابت. ماهية need_dependency. كيفية عمل إعادة التحميل للثابت. حلول للتحميل التلقائي المشترك. المقدمة تسمح لغة ريلز بكتابة تطبيقات كما لو حملت الشيفرة الخاص بها مسبقًا. في أصناف برنامج روبي عادي، تحتاج إلى تحميل جميع اعتماديته (dependencies): require 'application_controller' require 'post' class PostsController < ApplicationController def index ...

التعبير ‎#define في أردوينو

التعبير ‎#define هو أحد العناصر المفيدة في C، إذ يسمح بإعطاء اسمٍ لقيمةٍ ثابتةٍ قبل أن يُفسَّر البرنامج. الثوابت المعرَّفة باستعمال هذا التعبير في أردوينو لا تحتل أيَّة مساحةٍ من ذاكرة البرنامج على الشريحة (chip). سيبدِّل المفسِّر (compiler) القيمة المعرَّفة مكان المراجع التي تشير إلى هذه الثوابت أثناء عملية تصريف الشيفرة. انتبه إلى أنَّ استعمال التعبير ‎#define في تعريف الثوابت كما ذُكِر آنفًا له آثار جانبية غير مرغوبة مثل استعمال اسم ثابت عُرِّف في ‎#define مع اسم ثابت أو متغير ...

الكلمة const المفتاحية في أردوينو

الكلمة const المفتاحية هي اختصارٌ للكلمة «ثابت» (constant)، وهي مقيِّدةٌ للمتغيرات التي تٌستعمَل معها، إذ تعدِّل سلوك المتغير لتجعله في وضع «القراءة فقط» (read-only). هذا يعني أنَّه يمكن استعمال المتغير بشكل ممثال للمتغيرات التي من نفس نوعه باستثناء عدم القدرة على تغيير القيمة التي أُسندَت إليه عند إنشائه. ستواجه خطأً من المُصرِّف إن حاولت إسناد قيمةٍ لمتغيرٍ استُعملَت الكلمة المفتاحية const معه. تمتثل الثوابت المعرَّفة باستعمال الكلمة المفتاحية const لقواعد مجال المتغير (variable scoping) التي تضبط بقية المتغيرات. مع أخذ ...

الحزم (Packages) في Kotlin

التصريح عن الحزم يبدأ الملف المصدريّ (source file) عادةً بالتصريح (declaration) عن الحزم مثل: package foo.bar fun baz() {} class Goo {} // ... ويتوضع حينها كلُّ ما يحتويه هذا الملف (كالأصناف [classes] والدوال [functions] مثلًا) في الحزمة المُصرَّح عنها ببدايته، ففي الشيفرة السابقة إن الاسم الفعليّ الكامل للدالة baz()‎ هو foo.bar.baz والاسم الكامل للصنف Goo هو foo.bar.Goo. وإذا لم تُحدَّد الحزمة في بداية الملف فإن محتوياته تتبع للحزمة الافتراضيّة "default" التي لا اسم لها. استيراد الحزم الافتراضيّة (Default Imports) يُستورَد عددٌ من الحزم ...

عوامل الأنواع في PHP

تستخدم instanceof لتحديد ما إذا كان المتغير كائنًا مهيّئًا من صنف معين: المثال 1: استخدام instanceof مع الأصناف <?php class MyClass { } class NotMyClass { } $a = new MyClass; var_dump($a instanceof MyClass); var_dump($a instanceof NotMyClass); ?> يعطي المثال السابق المخرجات التالية: bool(true) bool(false) يمكن استخدام instanceof كذلك لتحديد ما إذا كان المتغير كائنًا مهيّئًا من صنف موروث من صنف آخر: المثال 2: استخدام instanceof مع الأصناف الموروثة <?php class ParentClass { } class MyClass extends ParentClass { } $a = new MyClass; var_dump($a instanceof MyClass); var_dump($a instanceof ParentClass); ?> يعطي المثال السابق المخرجات التالية: bool(true) bool(true) يمكن استخدام عامل النفي ...

عوامل الأنواع في PHP

تستخدم instanceof لتحديد ما إذا كان المتغير كائنًا مهيّئًا من صنف معين: المثال 1: استخدام instanceof مع الأصناف <?php class MyClass { } class NotMyClass { } $a = new MyClass; var_dump($a instanceof MyClass); var_dump($a instanceof NotMyClass); ?> يعطي المثال السابق المخرجات التالية: bool(true) bool(false) يمكن استخدام instanceof كذلك لتحديد ما إذا كان المتغير كائنًا مهيّئًا من صنف موروث من صنف آخر: المثال 2: استخدام instanceof مع الأصناف الموروثة <?php class ParentClass { } class MyClass extends ParentClass { } $a = new MyClass; var_dump($a instanceof MyClass); var_dump($a instanceof ParentClass); ?> يعطي المثال السابق المخرجات التالية: bool(true) bool(true) يمكن استخدام عامل النفي ...

عرض (20 السابقة | 20 التالية) (20 | 50 | 100 | 250 | 500).