ممارسات أنيقة على "وظائف المرافق العشوائية" [مغلقة

StackOverflow https://stackoverflow.com/questions/2215575

  •  19-09-2019
  •  | 
  •  

سؤال

كيف تقوم جميعا بتنظيم وظائفك العشوائية لتحسين وظائف اللغة خارج فئات OOP (الوظائف العالمية)؟

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

هل كانت مفيدة؟

المحلول

أحاول تجنب إعلان الوظائف في مساحة الاسم العالمية تماما. المناسبات النادرة جدا حيث أقوم بهذا، هو عند إضافة تطبيقات UserLand للوظائف التي ليست في إصدار PHP الخاص بي، على سبيل المثال

if(false === function_exists('lcfirst'))
{
    function lcfirst( $str ) { /* ... */}
}

يمكن أن تذهب الوظائف مثل هذا في توافق .php والتي سيتم تضمينها في ملف bootstrap، لذلك تتوفر في جميع أنحاء التطبيق والتحقق function_exists تأكد من عدم تشغيل المشكلات بمجرد أن يكون إصدار PHP دعما أصليا لهذه الوظيفة.

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

إذا لم تكن هناك أشياء يمكن أن تستمر فيها هذه الطرق، فلا يزال بإمكانك تجميعها في وحدة نمطية ثابتة مع اسم Utils في مساحة اسم فريدة من نوعها، لذلك لا تشوش مساحة الاسم العالمية. بهذه الطريقة، يمكنك التأكد من أنك لا اشتبك مع وظائف الطرف الثالث الأخرى في النطاق العالمي.

قبل 5.3، كنت أتمنى لهم بعد اتفاقية تسمية الكمثرى وأسماء الفئات البادئة بعد هيكل المجلد الخاص بك، على سبيل المثال إذا كانت الوحدة النمطية com/mattmueller/utils.php, ، كنت تستخدم

class Com_MattMueller_Utils
{
     public static function something($a, $b) { /* ... */ }
}

اعتبارا من PHP5.3، لدينا حقيقية أسماء الأسماء ويمكنك القيام به

namespace com\mattmueller\Utils;

class Utils
{
    public static function something($a, $b) { /* ... */ }
}

في جافا سكريبت، ليس لديك مساحات أسماء ولكن يمكن محاكاة لهم بسهولة عن طريق إضافة الوظائف إلى كائن، على سبيل المثال

// JavaScript
var com = (com) ? com : {};
com.mattmueller = {
    'Utils': {
        'something' : function(a,b) { /* ... */ }
     }
};

الأطر المشتركة عادة ما تنفذ وظائف إنشاء أعاسب أيضًا.

نصائح أخرى

أنا عموما حجز functions.php أو common.php لجميع وظائفي الغريب التي يجب أن تكون مثالية في PHP في المقام الأول. (معنى، ليس على الإطلاق محددة لمشروعي).

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

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


لأشياء محددة للمشروع، أظل Misc فئة تحتوي على مكالمات الوظيفة الغريبة حقا التي هي، في نفس الوقت، المشروع محددة.


بالنسبة لوظائف JavaScript، يمكنني أن أتصور نفس الشيء يمكن تطبيقه. إذا كنت ترغب في إنشاء functions.js أو أ global.js اكتب ملف، ربما يمكنك استخدام نفس المنطق.

أنا Allways استخدم فئة المساعد حيث يمكنني وضع كل قوتي غير OOP، لول. أعني أنه لا يزال نداء المساعدين يجري oo ويواجه أساليب بدلا من ذلك، مع ميزة يمكنك تنظيم وظائفك في المساعدين الفائقين. مثل stringhelper، dbhelper، الخ

بالنسبة لجافا سكريبت، لقد وجدت أن الخيار الأول يجب أن يكون لدمج الأدوات المساعدة الخاصة بي في جيس. من السهل كتابة أي نوع آخر من الوظائف، وعندما تصبح الأمور أكثر تعقيدا، من الرائع أن تكون قادرا على الاستفادة من النموذج الذي يفرض jquery على كل شيء (وعلى جميع التعليمات البرمجية الخاصة بي بالصفحة الأخرى في الموقع).

في جافا سكريبت، قم بإجراء ملف جديد ومجموعة لهم تحت كائن

global.js:

/* Function definitions */ 
var myFunctions = new Object();
myFunctions.func = function () {
   alert("hello"); 
}

يمكن استخدام نفس الفكرة ل PHP. مع هذا، لا داعي للقلق بشأن النزاعات في اتفاقيات التسمية عندما ينمو البرنامج الخاص بك أكبر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top