ব্যক্তিগতভাবে, আমি বিকল্প # 2 ব্যবহার করব। যদিও আমি জানি যে ইএল ব্যবহার করে সমস্যাটি সমাধান করা এবং ফাংশন বা ইউআই ব্যবহার করে এক্সএইচটিএমএল ডকুমেন্টগুলি জুড়ে কিছুটা পুনরায় ব্যবহার করা সম্ভব: প্যারামগুলির মধ্যে এটি জাভা শিম প্রয়োগের বহনযোগ্যতা, রক্ষণাবেক্ষণযোগ্যতা এবং পরীক্ষার দক্ষতার অভাব বলে মনে হয়।
যদি কোনও বিকাশকারী ইএল এবং জাভা উভয় ক্ষেত্রেই সাবলীল হন এবং এক্সএইচটিএমএল এবং জাভা উভয় মটরশুটির মালিক হন তবে আকার> 1 এর সাথে কোনও শর্তসাপেক্ষ মূল্যায়ন করতে EL ব্যবহার করার পক্ষে এটি তেমন বুদ্ধিমান মনে হয় না।
জাভা দিকটি বাস্তবায়নের জন্য অনেকগুলি সুবিধা রয়েছে বলে মনে হচ্ছে:
- আইডিই + সংকলকটিতে হেলান দেওয়ার ক্ষমতা
- কনস্ট্যান্ট বা এনামগুলি ব্যবহার করুন ("কুকুর" এবং "ছাল" এর জন্য), কোডের তুলনায় তারা অন্য কোথাও ব্যবহার করছেন এমন সম্ভাবনা রয়েছে ... যদি স্ট্রিংয়ের মান পরিবর্তিত হয় তবে এটি প্রতিটি মজাদারকে নিজেই প্রতিস্থাপন করতে আসল মজাদার fun কোড বেস
- যথাযথ ডেটা নিয়ে প্রশ্নে পৃষ্ঠায় নেভিগেট না করে আমি ইউনিট পরীক্ষার সাহায্যে যুক্তি অনুশীলন করতে পারি
অপশন 1 এর পক্ষে আমি শুনেছি (স্ট্যাকের বাইরের) প্রধান আর্গুমেন্টগুলির মধ্যে একটি:
"আপনি যদি এই যুক্তিটিকে দৃশ্যে রাখেন তবে কোনও উপাদান যখন রেন্ডার করে তা দেখতে অনেক সহজ" "
আমি খুঁজে পেয়েছি যে এটির জীবনের প্রথম পর্যায়ে এটির হালকা ওজন এবং কম জটিল হওয়ার জন্যই এটি হতে পারে। তবে এই অনুশীলনটিকে বৃহত্তর স্কেলে প্রয়োগ করা এবং ছোট প্রয়োগ হিসাবে এটি শর্তসাপেক্ষে একটি ইঁদুরের বাসা তৈরি করে এবং এটি বজায় রাখার জন্য দুঃস্বপ্নে পরিণত হতে পারে। আমি বুনোতে যা দেখেছি তার অনুরূপ কয়েকটি উদাহরণ এখানে দেওয়া হল:
<h:outputText value="grrr"
render="#{animal.type == 'dog' or animal.type == 'cat' or animal.type == 'horse'
or animal.type == 'pony' or animal.type == 'mule' or animal.type == 'lion'
or animal.type == 'tiger' or (animal.type == 'bird'
and animal.subType == 'macaw') or .... continue this for another line or two}"
/>
বা আমার প্রিয়, রেন্ডার শর্তযুক্ত একাধিক উপাদান ব্যবহার করে যা প্রদর্শিত হতে পারে বিভিন্ন মানকে উপস্থাপন করতে একে অপরের সাথে একচেটিয়া:
<h:outputText value="grr" render="#{theMonstrosityFromPreviousExample} />
<h:outputText value="cry"
render="#{animal.type == 'human' and animal.subType == 'baby'}" />
<h:outputText value="yo"
render="#{animal.type == 'human' and animal.subType == 'teenager'}" />
<h:outputText value="hello"
render="#{animal.type == 'human' and animal.subType == 'adult'}"/>
একবারে 4 টি পর্যন্ত পাঠ্য প্রদর্শিত হতে পারে? প্রথম নজরে আপনি বলতে পারবেন না, প্রতিটি শর্তের একটি চেক করা প্রয়োজন। পার্শ্ব নোট হিসাবে আমি বুঝতে পারি এই উদাহরণটিও খুব খারাপ নকশা, কারণ এগুলিকে এসি তে রাখা যেতে পারে: চয়ন করুন ... তবে আমি এটি আগে দেখেছি।
দিনের শেষে এটি তাত্ত্বিকভাবে এখনও 'ভিউ' যুক্তিযুক্ত কারণ এটি নির্ধারণ করে যে আসলে কী প্রদর্শিত হবে তাই এটি এক্সএইচটিএমএলে থাকা উচিত এমন একটি ধারণাগত যুক্তি রয়েছে। আমি যে সমস্যাটি পেয়েছি তা হ'ল ভিউ টেমপ্লেটে এই জাতীয় যুক্তি সহ দীর্ঘমেয়াদে বোঝা লেআউটটিকে আরও শক্ত করে তুলতে পারে এবং আমি এখনও দেখতে পেলাম যে সমস্যাটি সমাধানের এই পদ্ধতিটি জাভা ব্যবহারের ক্ষেত্রে কোনও আসল উপকারকে ধারণ করে শিম বাস্তবায়ন।
barking animals
তবে আমি সেই পদ্ধতিটিকে কল করব কারণ এটি ইতিমধ্যে বিদ্যমান। আপনি যদি একাধিক সাইটে এটির দর্শনের যুক্তি ব্যবহার করেন তবে আপনি এটি থেকে একটি এল ফাংশন তৈরি করতে পারেন।