আমি আজ একজন সিনিয়র বিকাশকারীর কাছ থেকে একটি কোড পর্যালোচনা পেয়েছিলাম "জিজ্ঞাসা করুন, সুইচ স্টেটমেন্টের মাধ্যমে ফাংশন প্রেরণে আপনার আপত্তি কী?" আমি কল করার পদ্ধতিগুলিতে স্যুইচ করার মাধ্যমে একটি যুক্তি পাম্প করা কীভাবে খারাপ OOP, এটি এক্সটেনসিবল নয় ইত্যাদি সম্পর্কে অনেক জায়গায় পড়েছি However তবে, আমি সত্যই তার পক্ষে একটি নির্দিষ্ট উত্তর নিয়ে আসতে পারি না। আমি এটি একবার এবং সর্বদা জন্য নিষ্পত্তি করতে চাই।
এখানে আমাদের প্রতিযোগিতামূলক কোড প্রস্তাবনাগুলি (পিএইচপি উদাহরণ হিসাবে ব্যবহৃত হয়, তবে আরও সার্বজনীন প্রয়োগ করতে পারে):
class Switch {
public function go($arg) {
switch ($arg) {
case "one":
echo "one\n";
break;
case "two":
echo "two\n";
break;
case "three":
echo "three\n";
break;
default:
throw new Exception("Unknown call: $arg");
break;
}
}
}
class Oop {
public function go_one() {
echo "one\n";
}
public function go_two() {
echo "two\n";
}
public function go_three() {
echo "three\n";
}
public function __call($_, $__) {
throw new Exception("Unknown call $_ with arguments: " . print_r($__, true));
}
}
তার যুক্তির অংশটি ছিল "জেনেরিক __call () ম্যাজিক পদ্ধতিতে আপনার যা আছে তার তুলনায়" এটি (স্যুইচ পদ্ধতি) ডিফল্ট কেসগুলি হ্যান্ডেল করার অনেক ক্লিনার উপায়। "
আমি পরিষ্কার সম্পর্কে দ্বিমত পোষণ করি এবং প্রকৃতপক্ষে কলটি পছন্দ করি তবে অন্যরা কী বলবে তা আমি শুনতে চাই।
Oop
প্রকল্পের সমর্থনে আমি যুক্তিগুলি উপস্থিত করতে পারি :
- আপনাকে যে কোডটি লিখতে হবে তার নিরিখে কিছুটা পরিষ্কার (কম, পড়ার পক্ষে সহজ, বিবেচনা করার জন্য কম কীওয়ার্ড)
- সমস্ত ক্রিয়া একক পদ্ধতিতে অর্পিত হয় না। এখানে মৃত্যুদন্ড কার্যকর করার ক্ষেত্রে খুব বেশি পার্থক্য নেই, তবে কমপক্ষে পাঠ্যটি আরও বগিযুক্ত।
- একই শিরাতে ক্লাসের যে কোনও জায়গায় একটি নির্দিষ্ট স্পট না রেখে অন্য কোনও পদ্ধতি যুক্ত করা যেতে পারে।
- পদ্ধতিগুলি নামগতির, যা দুর্দান্ত।
- এখানে প্রযোজ্য নয়, তবে এমন কোনও ক্ষেত্রে বিবেচনা
Switch::go()
করুন যেখানে প্যারামিটারের পরিবর্তে কোনও সদস্যের উপর পরিচালিত হয়। আপনাকে প্রথমে সদস্য পরিবর্তন করতে হবে, তারপরে পদ্ধতিটি কল করুন। আপনিOop
যেকোন সময় স্বাধীনভাবে পদ্ধতি কল করতে পারেন।
Switch
প্রকল্পের সমর্থনে আমি যুক্তিগুলি উপস্থিত করতে পারি :
- তর্কের খাতিরে, একটি ডিফল্ট (অজানা) অনুরোধের সাথে সাফ করার ক্লিনার পদ্ধতি
- কম যাদুকর বলে মনে হচ্ছে এটি অপরিচিত বিকাশকারীদের আরও স্বাচ্ছন্দ্য বোধ করতে পারে
কারও পক্ষে দু'পক্ষের জন্য কিছু যোগ করার আছে? আমি তার জন্য একটি ভাল উত্তর পেতে চাই।
Oop
প্রতিটি পদ্ধতি বর্ণনা করার জন্য পিএইচপিডোক রাখতে দেয় যা কিছু আইডিই (যেমন, নেটবিয়ান) দ্বারা পার্স করা যায়।