প্রথম, আমি এডজার ডাব্লু ডিজকস্ট্রার ১৯ 197৪ সালের "বৈজ্ঞানিক চিন্তার ভূমিকার বিষয়ে" পত্রিকাটি পড়েছিলাম:
আমি আপনাকে বোঝানোর চেষ্টা করি, আমার স্বাদ কী সমস্ত বুদ্ধিমান চিন্তার বৈশিষ্ট্যযুক্ত। এটি হ'ল যে ব্যক্তি নিজের ধারাবাহিকতার জন্য বিচ্ছিন্নভাবে কারও বিষয়গুলির একটি বিষয় গভীরভাবে অধ্যয়ন করতে ইচ্ছুক, সর্বদা জেনে যে কেউ কেবল একটি দিক দিয়ে নিজেকে অধিষ্ঠিত করছে। আমরা জানি যে একটি প্রোগ্রাম অবশ্যই সঠিক হতে হবে এবং আমরা কেবলমাত্র সেই দৃষ্টিকোণ থেকে এটি অধ্যয়ন করতে পারি; আমরা আরও জানি যে এটি দক্ষ হওয়া উচিত এবং আমরা এর কার্যকারিতা অন্য কোনও দিনে অধ্যয়ন করতে পারি, সুতরাং কথা বলতে। অন্য মেজাজে আমরা নিজেদেরকে জিজ্ঞাসা করতে পারি এবং যদি তাই: তবে, প্রোগ্রামটি আকাঙ্ক্ষিত। তবে বিপরীতে কিছুই অর্জন করা যায় না - এই বিভিন্ন দিক এক সাথে সামলে নিয়ে। এটিই আমি মাঝে মাঝে "উদ্বেগের বিচ্ছেদ" বলেছি, যা পুরোপুরি সম্ভব না হলেও, কারও চিন্তাকে কার্যকরভাবে সাজানোর একমাত্র উপলভ্য কৌশল, যা আমি জানি। "কিছু বিষয়ে মনোযোগ কেন্দ্রীভূত করা" বলতে আমি এটি বোঝাতে চাইছি: এর অর্থ অন্য দিকগুলি উপেক্ষা করা নয়, এটি কেবল ন্যায়বিচার করছে যে এই দিকের দৃষ্টিকোণ থেকে অন্যটি অপ্রাসঙ্গিক। এটি একই সাথে একাধিক-ট্র্যাক মনযুক্ত।
আমি উদ্বেগের আধুনিক বিচ্ছেদ আপনার কোডটি মডুলারাইজ করার বিষয়ে কথা বলছি। যাইহোক, উপরের উদ্ধৃতিটি পড়ে, আমি অন্য দিকগুলির দিকে মনোনিবেশ না করে একবারে আপনার মনকে একবারে একটি নির্দিষ্ট কাজে মনোনিবেশ করা হিসাবে এটি বুঝতে পারি। এর অর্থ এই নয় যে অগত্যা কোডটি মডুলার খণ্ডগুলিতে আলাদা করা দরকার।
অর্থাত্, আপনার সামনে একটি কোড রয়েছে বলে নিন যে একটি ফাইলে একটি ফাইলে ভিউ, রেপোজিটরি, কন্ট্রোলার, ইভেন্ট হ্যান্ডলিং, ফ্যাক্টরি ইত্যাদি ধারণার ধারণাগুলি রয়েছে।
সংক্ষিপ্ত উদাহরণের জন্য, এখানে এমন কিছু কোড রয়েছে যাতে ডেটা অ্যাক্সেস রয়েছে এবং দেখুন (আউটপুট):
$sql = "SELECT * FROM product WHERE id = " . db_input($id);
$row = db_fetch_array(db_query($sql));
<option value="<?=$row['id']?>"<?= $row['ver'] == $row['ver'] ? ' selected="selected"' : '' ?>>Version <?=$row['ver']?></option>
আধুনিক ওও ব্যবহার করে আমি নিজের ফাইলটিতে তথ্য সংগ্রহের প্যাটার্ন ব্যবহার করে ডেটা অ্যাক্সেস রাখতে পারতাম, ভিউ কোডটি তার নিজের ফাইল টেম্পলেটে যেতে পারে এবং আমি একটি নিয়ামক (বা ক্রিয়া বা অনুরোধ হ্যান্ডলারের) মাধ্যমে যোগাযোগের জন্য তাদের একসাথে ওয়্যার করতে পারি এবং আমি এটি করতে পারি বিভিন্ন নির্ভরতা তৈরি করতে এবং তারের জন্য একটি কারখানা যুক্ত করুন। এবং আমার কাছে একটি কনফিগারেশন ফাইল থাকতে পারে যা এই কারখানাগুলিকে সংজ্ঞায়িত করে। অবশ্যই এটি একক ফাইল-সব থেকে এক ধাপ দূরে।
উদ্বেগের পৃথকীকরণ সম্পর্কে আমার প্রশ্নটি এরকম: ডিজকস্ট্রার উক্তিটি পড়ে আমি ধারণা পেয়েছিলাম যে সম্ভবত তিনি উদ্বেগের পৃথকীকরণের জন্য "কোডের মডুলার পৃথকীকরণ (ফাইলগুলিতে বা তাদের নিজস্ব ফাংশন / পদ্ধতি / ইত্যাদি)" বোঝাতে পারেননি, এবং শারীরিকভাবে কোডে শারীরিকভাবে পৃথক হওয়া আছে কিনা তা বিবেচনা না করে নিজেকে গুরুত্বপূর্ণ বোঝা না করে প্রোগ্রামটির কোনও দিকটির দিকে মনোযোগ কেন্দ্রীভূত করার জন্য তিনি আরও বেশি বোঝাতে চেয়েছিলেন।
তাহলে কেন আমরা শারীরিক মডুলার কোড পৃথকীকরণ এবং ডিজাইনের ধরণগুলি দিয়ে আমাদের বোঝা দিচ্ছি? আপনার কোডটি কীভাবে কাঠামোবদ্ধ করা যায় তা বিবেচনা করেই কি কেবল কোনও দিকটিতে নিজেকে কেন্দ্রীভূত করা যথেষ্ট নয়?
আমি সর্বাধিক ভয়াবহ স্প্যাগেটি কোড লেখার বিষয়ে কথা বলছি না এবং তারপরে কেবল এটির একটি দিক বিবেচনা করছি, এটি সম্ভবত বোঝা। তবে শেষ পর্যন্ত, আমি যেদিকে যাচ্ছি, তা হচ্ছে, কেন শারীরিক কোড পৃথকীকরণ সম্পাদন করা, কেন কোডটিকে আলাদা ফাইল বা অংশগুলিতে বিভক্ত করুন, যখন মানসিকভাবে কোনও দিকটিতে নিজেকে ফোকাস করার প্রয়োজন হয় না?
উদ্বেগের বিচ্ছেদ কি শারীরিকের চেয়ে মানসিক অনুশীলন থেকে যায়?
অন্য কথায়, প্রোগ্রামিংয়ের মানসিক (ফোকাস) এবং শারীরিক (কাগজে কোড) দিকগুলির মধ্যে কি কোনও সংযোগ বিচ্ছিন্ন হওয়া উচিত?
IF
, WHILE
, FOR
পরিবর্তে GOTO
। মডিউলার = একটি সুনির্দিষ্ট সংজ্ঞায়িত পাবলিক এপিআই সহ মডিউলগুলি কোনও লুকানো অভ্যন্তরীণ বাস্তবায়ন এবং উপস্থাপনা থেকে কঠোরভাবে পৃথক। (উদাঃ মডুলা, মেসা, মডিউলা -২, মডিউলা -৩, পরবর্তীকালে পাস্কাল উপভাষা ( UNIT
)))