لاستخدام طرق العرض أو عدم استخدام طرق العرض

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

  •  09-06-2019
  •  | 
  •  

سؤال

يبدو أنني الآن متورط في نقاش مع مبرمج آخر في هذا المشروع يعتقد أن وجهات النظر ليس لها أي مزايا.يقترح نظام PHP يبدو كالتالي:

$draw = new Draw;
$nav = $draw->wideHeaderBox().
$draw->left().
    $draw->image().
        Image::get($image,60,array('id'=>'header_image')).
    $draw->imageEnd().
$draw->leftEnd().
$draw->left(10).
    '<div id="header_text">'.
        self::defaultSectionText().
    '</div>'.
$draw->leftEnd().

وما إلى ذلك (هذا موجود في وحدة التحكم).الآن أصبحت حججه لهذا الأمر منطقية إلى حد ما، فهو يدعي أنه إذا كانت هناك إعادة تصميم، فكل ما يتعين علينا القيام به هو تغيير HTML في مكان واحد وسيتغير في كل مكان تلقائيًا.ولكن لسبب ما، لا تزال هذه الطريقة تزعجني بطريقة خاطئة، فهل هناك أي ميزة لوجهات النظر حول هذه الطريقة؟أعني إلى جانب عدم الاضطرار إلى إعادة كتابة HTML يدويًا.

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

المحلول

تعد أدوات توفير الوقت بتنسيق HTML مفيدة، ولكنها تكون مفيدة فقط عندما تكون بديهية وسهلة الفهم.الاضطرار إلى إنشاء مثيل أ new Draw فقط لا يبدو طبيعيا جدا.بالإضافة إلى، wideHeaderBox و left سيكون لها أهمية فقط لشخص يعرف النظام عن كثب.وماذا لو كان هناك يكون إعادة تصميم، مثل زميلك في العمل؟ماذا لو wideHeaderBox يصبح ضيقا جدا؟هل ستقوم بتغيير العلامات (والأنماط، المفترضة) التي تم إنشاؤها بواسطة طريقة PHP مع ترك اسم طريقة غير دقيق للغاية لاستدعاء الكود؟

إذا يا رفاق فقط يملك لاستخدام إنشاء HTML، يجب عليك استخدامه متخللًا في ملفات العرض، ويجب عليك استخدامه عندما يكون ضروريًا/مفيدًا حقًا، مثل شيء من هذا القبيل:

HTML::link("Wikipedia", "http://en.wikipedia.org");
HTML::bulleted_list(array(
    HTML::list_item("Dogs"),
    HTML::list_item("Cats"),
    HTML::list_item("Armadillos")
));

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

نصائح أخرى

والحجة التي يستخدمها هي الحجة التي تحتاج إليها يملك الآراء.وكلاهما يؤدي إلى تغييره في مكان واحد فقط.ومع ذلك، في نسخته، أنت تخلط بين ترميز العرض ورمز العمل.

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

هل نظرت إلى ذكي؟ http://smarty.php.net

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

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

يبدو الأمر مطولًا جدًا ويصعب اتباعه لنكون صادقين، ويبدو أن بعض التعليمات البرمجية عبارة عن معلومات تخطيطية كبيرة جدًا.

نحاول دائمًا فصل المنطق عن الإخراج قدر الإمكان.ومع ذلك، غالبًا ما يكون العرض والبيانات مرتبطين ارتباطًا وثيقًا للغاية حيث يملي كلا الجزأين كيف يجب أن يكون الجزء الآخر (على سبيل المثال، في موقع تجارة إلكترونية بسيط، قد تقرر أنك تريد البدء في عرض مستويات المخزون بجوار كل منتج ، والذي من الواضح أنه سيتضمن تغيير طريقة العرض لإضافة HTML مناسب لهذا، ومنطق العمل للبدء ومعرفة قيمة السهم).

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

أجد دائمًا أنه من الأسهل العمل مباشرةً باستخدام لغة HTML.هناك طبقة تجريد أقل (html -> صفحة ويب فعلية / وظيفة php -> html -> صفحة ويب فعلية) للتعامل معها، ثم تعمل فقط في HTML.

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

ضع في اعتبارك أن لغات/أنظمة القوالب تتيح لك غالبًا تضمين قوالب فرعية، مما يسمح لك بالحصول على بعض كتل HTML القابلة لإعادة الاستخدام.

خلاصة القول هي أنني إذا كنت قد بدأت للتو في شركتك ورأيت كودًا كهذا في كل مكان، فإن أول ما يتبادر إلى ذهني سيكون: "اللعنة!"بحاجة إلى وظيفة جديدة مرة أخرى.

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