যখন আমি বড় পদ্ধতিগুলি (বা পদ্ধতিগুলি বা ফাংশনগুলি বিভক্ত করি) - এই প্রশ্নটি ওওপির জন্য নির্দিষ্ট নয় , তবে যেহেতু আমি ওওপি ভাষায় 99% সময় কাজ করি, এটি পরিভাষা যার সাথে আমি সবচেয়ে স্বাচ্ছন্দ্য বোধ করি) অনেকগুলি ছোট , আমি প্রায়শই নিজেকে ফলাফল থেকে অসন্তুষ্ট মনে করি। এই ছোট পদ্ধতিগুলির তুলনায় যুক্তিযুক্ত হওয়া শক্ত হয়ে ওঠে যখন এগুলি বড়দের মধ্যে কেবল কোডের ব্লক ছিল, কারণ যখন আমি এগুলি বের করি তখন আমি প্রচুর অন্তর্নিহিত অনুমানগুলি হারা যা কলারের প্রসঙ্গে আসে।
পরে, যখন আমি এই কোডটি দেখি এবং স্বতন্ত্র পদ্ধতিগুলি দেখি, ততক্ষণে সেগুলি কোথা থেকে ডেকে আনা হয়েছিল তা আমি তাত্ক্ষণিকভাবে জানি না এবং সেগুলিকে ফাইলের যে কোনও জায়গা থেকে ডাকা যেতে পারে এমন সাধারণ ব্যক্তিগত পদ্ধতি হিসাবে ভাবি। উদাহরণস্বরূপ, একটি সূচনা পদ্ধতি (কনস্ট্রাক্টর বা অন্যথায়) ছোট ছোট কয়েকটি সিরিজের মধ্যে বিভক্ত কল্পনা করুন: পদ্ধতির নিজেই প্রসঙ্গে আপনি পরিষ্কারভাবে জানেন যে অবজেক্টের অবস্থা এখনও অবৈধ, তবে একটি সাধারণ বেসরকারী পদ্ধতিতে আপনি সম্ভবত সেই ধারণাটিকে ধরে নিয়েছেন ইতিমধ্যে আরম্ভ করা হয়েছে এবং একটি বৈধ অবস্থায় রয়েছে।
আমি এর জন্য একমাত্র সমাধানটি দেখেছি where
হ্যাসকেলে থাকা ধারাটি যা আপনাকে "প্যারেন্ট" ফাংশনে ব্যবহৃত ছোট ছোট ফাংশনগুলি সংজ্ঞায়িত করতে দেয়। মূলত: এটি দেখতে এটির মতো দেখাচ্ছে:
len x y = sqrt $ (sq x) + (sq y)
where sq a = a * a
তবে অন্যান্য ভাষাগুলি আমি ব্যবহার করি এর মতো কিছু নেই - নিকটতম জিনিসটি একটি স্থানীয় সুযোগে ল্যাম্বডাকে সংজ্ঞায়িত করছে, এটি সম্ভবত আরও বিভ্রান্তিকর।
সুতরাং, আমার প্রশ্নটি হ'ল - আপনি কি এটির মুখোমুখি হন, এবং আপনি কি এটি দেখেন যে এটি একটি সমস্যা? আপনি যদি করেন তবে আপনি সাধারণত কীভাবে এটি সমাধান করবেন, বিশেষত জাভা / সি # / সি ++ এর মতো "মূলধারার" ওওপি ভাষায়?
সদৃশগুলি সম্পর্কে সম্পাদনা করুন: অন্যরা লক্ষ্য করেছেন যে, বিভাজন পদ্ধতি এবং ওয়ান-লাইনার সম্পর্কিত ছোট্ট প্রশ্নগুলি নিয়ে ইতিমধ্যে প্রশ্ন রয়েছে। আমি সেগুলি পড়ি, এবং তারা অন্তর্ভুক্ত অনুমানগুলির বিষয়টি নিয়ে আলোচনা করে না যা কলারের প্রসঙ্গে (উদাহরণস্বরূপ উপরে, অবজেক্টটি আরম্ভ করা হচ্ছে) থেকে নেওয়া যেতে পারে। এটাই আমার প্রশ্নের মূল বিষয় এবং এ কারণেই আমার প্রশ্নটি আলাদা।
আপডেট: আপনি যদি নীচে এই প্রশ্ন এবং আলোচনা অনুসরণ করেন তবে আপনি জন কারম্যাকের এই নিবন্ধটি উপভোগ করতে পারেন , বিশেষত:
বাস্তব কোডটি কার্যকর করা হচ্ছে তা সম্পর্কে সচেতনতা ছাড়াও, ইনলাইনিং ফাংশনগুলির অন্যান্য স্থান থেকে ফাংশনটি কল করা সম্ভব না করার সুবিধাও রয়েছে। এটি হাস্যকর শোনায় তবে এটির একটি বিষয় রয়েছে। কোডবেস ব্যবহারের বছরগুলিতে বাড়ার সাথে সাথে শর্টকাট নেওয়ার এবং কেবল একটি ফাংশন কল করার প্রচুর সুযোগ থাকবে যা আপনার মনে হয় যে কাজটি করা দরকার তা কেবল কাজ করে। পার্সিয়ালআপডেটএ (), এবং আংশিক আপডেট বি () কল করে এমন একটি ফুলআপডেট () ফাংশন থাকতে পারে তবে কিছু বিশেষ ক্ষেত্রে আপনি বুঝতে পারবেন (বা ভাবেন) যে আপনাকে কেবল আংশিক আপডেটবি () করতে হবে এবং আপনি অন্যটিকে এড়িয়ে দক্ষ হয়ে উঠছেন হবে। প্রচুর এবং প্রচুর বাগগুলি এখান থেকে এসেছে। বেশিরভাগ বাগগুলি মৃত্যুদন্ড কার্যকর করার ফলাফল হিসাবে আপনি যা ভাবেন ঠিক তা না করে।